[DoctrineBundle] fixed the overridding of an Entity

This commit is contained in:
Fabien Potencier 2010-03-10 22:29:45 +01:00
parent dad75524fc
commit fff133414d

View File

@ -201,7 +201,7 @@ class DoctrineExtension extends LoaderExtension
$bundleEntityMappings = array(); $bundleEntityMappings = array();
$bundleDirs = $this->bundleDirs; $bundleDirs = $this->bundleDirs;
$aliasMap = array(); $aliasMap = array();
foreach ($this->bundles as $className) foreach (array_reverse($this->bundles) as $className)
{ {
$tmp = dirname(str_replace('\\', '/', $className)); $tmp = dirname(str_replace('\\', '/', $className));
$namespace = str_replace('/', '\\', dirname($tmp)); $namespace = str_replace('/', '\\', dirname($tmp));
@ -209,27 +209,29 @@ class DoctrineExtension extends LoaderExtension
if (isset($bundleDirs[$namespace])) if (isset($bundleDirs[$namespace]))
{ {
$type = false; continue;
if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Resources/config/doctrine/metadata')) }
{
$type = $this->detectMappingType($dir);
}
if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Entities')) $type = false;
{ if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Resources/config/doctrine/metadata'))
$type = 'annotation'; {
$type = $this->detectMappingType($dir);
}
$aliasMap[$class] = $namespace.'\\'.$class.'\\Entities'; if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Entities'))
} {
$type = 'annotation';
if (false !== $type) $aliasMap[$class] = $namespace.'\\'.$class.'\\Entities';
{ }
$mappingDriverDef->addMethodCall('addDriver', array(
new Reference(sprintf('doctrine.orm.metadata_driver.%s', $type)), if (false !== $type)
$namespace.'\\'.$class.'\\Entities' {
) $mappingDriverDef->addMethodCall('addDriver', array(
); new Reference(sprintf('doctrine.orm.metadata_driver.%s', $type)),
} $namespace.'\\'.$class.'\\Entities'
)
);
} }
} }
$ormConfigDef->addMethodCall('setEntityNamespaces', array($aliasMap)); $ormConfigDef->addMethodCall('setEntityNamespaces', array($aliasMap));