Преглед изворни кода

[DoctrineBundle] Use the first entity manager as default one when no configuration is set

Christophe Coevoet пре 14 година
родитељ
комит
19aa266b6a

+ 3 - 3
src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php

@@ -52,9 +52,9 @@ class Configuration
                 ->beforeNormalization()
                     ->ifNull()
                     // Define a default connection using the default values
-                    ->then(function($v) { return array ('default_connection' => 'default', 'connections' => array('default' => array())); })
+                    ->then(function($v) { return array ('connections' => array('default' => array())); })
                 ->end()
-                ->scalarNode('default_connection')->isRequired()->cannotBeEmpty()->end()
+                ->scalarNode('default_connection')->end()
                 ->fixXmlConfig('type')
                 ->arrayNode('types')
                     ->useAttributeAsKey('name')
@@ -109,7 +109,7 @@ class Configuration
     {
         $node
             ->arrayNode('orm')
-                ->scalarNode('default_entity_manager')->isRequired()->cannotBeEmpty()->end()
+                ->scalarNode('default_entity_manager')->end()
                 ->booleanNode('auto_generate_proxy_classes')->defaultFalse()->end()
                 ->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/orm/Proxies')->end()
                 ->scalarNode('proxy_namespace')->defaultValue('Proxies')->end()

+ 12 - 1
src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php

@@ -60,6 +60,10 @@ class DoctrineExtension extends AbstractDoctrineExtension
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('dbal.xml');
 
+        if (empty ($config['default_connection'])) {
+            $config['default_connection'] = reset(array_keys($config['connections']));
+        }
+
         $container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $config['default_connection']));
         $container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $config['default_connection']), false));
         $container->setParameter('doctrine.dbal.default_connection', $config['default_connection']);
@@ -140,6 +144,13 @@ class DoctrineExtension extends AbstractDoctrineExtension
     {
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('orm.xml');
+
+        $entityManagers = array_keys($config['entity_managers']);
+
+        if (empty ($config['default_entity_manager'])) {
+            $config['default_entity_manager'] = reset($entityManagers);
+        }
+
         $options = array('default_entity_manager', 'auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');
         foreach ($options as $key) {
             $container->setParameter('doctrine.orm.'.$key, $config[$key]);
@@ -152,7 +163,7 @@ class DoctrineExtension extends AbstractDoctrineExtension
             $this->loadOrmEntityManager($entityManager, $container);
         }
 
-        $container->setParameter('doctrine.orm.entity_managers', array_keys($config['entity_managers']));
+        $container->setParameter('doctrine.orm.entity_managers', $entityManagers);
     }
 
     /**