diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php index f52bdb7ff5c14..3875db646ff21 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php @@ -1012,13 +1012,14 @@ private function addCacheSection(ArrayNodeDefinition $rootNode) ->prototype('array') ->fixXmlConfig('adapter') ->beforeNormalization() - ->ifTrue(function ($v) { return (isset($v['adapters']) || \is_array($v['adapter'] ?? null)) && isset($v['provider']); }) - ->thenInvalid('Pool cannot have a "provider" while "adapter" is set to a map') + ->ifTrue(function ($v) { return isset($v['provider']) && \is_array($v['adapters'] ?? $v['adapter'] ?? null) && 1 < \count($v['adapters'] ?? $v['adapter']); }) + ->thenInvalid('Pool cannot have a "provider" while more than one adapter is defined') ->end() ->children() ->arrayNode('adapters') ->performNoDeepMerging() ->info('One or more adapters to chain for creating the pool, defaults to "cache.app".') + ->beforeNormalization()->castToArray()->end() ->beforeNormalization() ->always()->then(function ($values) { if ([0] === array_keys($values) && \is_array($values[0])) {