From 8b8545895f52da456b249416c9d8677710bfeafa Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sat, 30 Apr 2011 21:16:29 +0200 Subject: [PATCH] [DoctrineBundle] fixed auto-mapping When auto_mapping is true, you can avoid a bundle to be automatically mapped by setting the value to false: auto_mapping: true mappings: BlogBundle: false With the above configuration, all bundles will be auto-mapped, but the BlogBundle won't be. Bundles that are defined in mappings won't be managed by the auto-mapping feature: auto_mapping: true mappings: BlogBundle: xml --- .../DependencyInjection/AbstractDoctrineExtension.php | 4 ++-- .../DoctrineBundle/DependencyInjection/Configuration.php | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Bundle/DoctrineAbstractBundle/DependencyInjection/AbstractDoctrineExtension.php b/src/Symfony/Bundle/DoctrineAbstractBundle/DependencyInjection/AbstractDoctrineExtension.php index f8d7818268b5..dd3c16dbaa5a 100644 --- a/src/Symfony/Bundle/DoctrineAbstractBundle/DependencyInjection/AbstractDoctrineExtension.php +++ b/src/Symfony/Bundle/DoctrineAbstractBundle/DependencyInjection/AbstractDoctrineExtension.php @@ -42,7 +42,7 @@ abstract class AbstractDoctrineExtension extends Extension */ protected function loadMappingInformation(array $objectManager, ContainerBuilder $container) { - if (!$objectManager['mappings'] && $objectManager['auto_mapping']) { + if ($objectManager['auto_mapping']) { // automatically register bundle mappings foreach (array_keys($container->getParameter('kernel.bundles')) as $bundle) { if (!isset($objectManager['mappings'][$bundle])) { @@ -52,7 +52,7 @@ protected function loadMappingInformation(array $objectManager, ContainerBuilder } foreach ($objectManager['mappings'] as $mappingName => $mappingConfig) { - if (false === $mappingConfig) { + if (null !== $mappingConfig && false === $mappingConfig['mapping']) { continue; } diff --git a/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php index 1feb2a795c6f..92e6a6f88f6c 100644 --- a/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php +++ b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php @@ -224,11 +224,13 @@ private function getOrmEntityManagersNode() ->prototype('array') ->beforeNormalization() ->ifString() - ->then(function($v) { return array ('type' => $v); }) + ->then(function($v) { return array('type' => $v); }) ->end() - ->treatNullLike(array ()) + ->treatNullLike(array()) + ->treatFalseLike(array('mapping' => false)) ->performNoDeepMerging() ->children() + ->scalarNode('mapping')->defaultValue(true)->end() ->scalarNode('type')->end() ->scalarNode('dir')->end() ->scalarNode('alias')->end() @@ -272,7 +274,7 @@ private function getOrmCacheDriverNode($name) ->addDefaultsIfNotSet() ->beforeNormalization() ->ifString() - ->then(function($v) { return array ('type' => $v); }) + ->then(function($v) { return array('type' => $v); }) ->end() ->children() ->scalarNode('type')->defaultValue('array')->isRequired()->end()