Kaynağa Gözat

Merge remote branch 'weaverryan/security_factories_delegating_loader'

* weaverryan/security_factories_delegating_loader:
  [SecurityBundle] Using a DelegatingLoader so that security factories can be in any config format
Fabien Potencier 14 yıl önce
ebeveyn
işleme
4f47fc708e

+ 13 - 1
src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

@@ -15,6 +15,10 @@ use Symfony\Component\DependencyInjection\DefinitionDecorator;
 use Symfony\Component\DependencyInjection\Alias;
 use Symfony\Component\HttpKernel\DependencyInjection\Extension;
 use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
+use Symfony\Component\Config\Loader\DelegatingLoader;
+use Symfony\Component\Config\Loader\LoaderResolver;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\DependencyInjection\Parameter;
@@ -566,7 +570,15 @@ class SecurityExtension extends Extension
         // load service templates
         $c = new ContainerBuilder();
         $parameterBag = $container->getParameterBag();
-        $loader = new XmlFileLoader($c, new FileLocator(__DIR__.'/../Resources/config'));
+
+        $locator = new FileLocator(__DIR__.'/../Resources/config');
+        $resolver = new LoaderResolver(array(
+            new XmlFileLoader($c, $locator),
+            new YamlFileLoader($c, $locator),
+            new PhpFileLoader($c, $locator),
+        ));
+        $loader = new DelegatingLoader($resolver);
+
         $loader->load('security_factories.xml');
 
         // load user-created listener factories