Kaynağa Gözat

[DoctrineBundle] fixed the overridding of an Entity

Fabien Potencier 15 yıl önce
ebeveyn
işleme
fff133414d

+ 24 - 22
src/Symfony/Framework/DoctrineBundle/DependencyInjection/DoctrineExtension.php

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