From e372183b2640211395814e9a128e61a295de09ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Simon?= Date: Mon, 4 Mar 2013 17:38:33 +0100 Subject: [PATCH] [TwigBundle] Adds service check for extension loading --- .../Compiler/ExtensionPass.php | 34 +++++++++++++++++++ .../DependencyInjection/TwigExtension.php | 3 -- .../TwigBundle/Resources/config/twig.xml | 3 +- src/Symfony/Bundle/TwigBundle/TwigBundle.php | 2 ++ 4 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php diff --git a/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php b/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php new file mode 100644 index 000000000000..a775b10fb68b --- /dev/null +++ b/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\TwigBundle\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; + +/** + * @author Jean-François Simon + */ +class ExtensionPass implements CompilerPassInterface +{ + public function process(ContainerBuilder $container) + { + if ($container->has('form.extension')) { + $container->getDefinition('twig.extension.form')->addTag('twig.extension'); + $reflClass = new \ReflectionClass('Symfony\Bridge\Twig\Extension\FormExtension'); + $container->getDefinition('twig.loader')->addMethodCall('addPath', array(dirname(dirname($reflClass->getFileName())).'/Resources/views/Form')); + } + + if (false === $container->has('translator')) { + $container->getDefinition('twig.extension.trans')->addTag('twig.extension'); + } + } +} diff --git a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php index 5e056a85f484..475b18e5225c 100644 --- a/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php +++ b/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php @@ -57,9 +57,6 @@ public function load(array $configs, ContainerBuilder $container) $container->setParameter('twig.form.resources', $config['form']['resources']); - $reflClass = new \ReflectionClass('Symfony\Bridge\Twig\Extension\FormExtension'); - $container->getDefinition('twig.loader.filesystem')->addMethodCall('addPath', array(dirname(dirname($reflClass->getFileName())).'/Resources/views/Form')); - $twigFilesystemLoaderDefinition = $container->getDefinition('twig.loader.filesystem'); // register user-configured paths diff --git a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml index 6dbc001c0b8f..5dbeef7e2fc8 100644 --- a/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml +++ b/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml @@ -58,7 +58,6 @@ - @@ -93,8 +92,8 @@ + - diff --git a/src/Symfony/Bundle/TwigBundle/TwigBundle.php b/src/Symfony/Bundle/TwigBundle/TwigBundle.php index 88a172caab0b..7b4a2053f0f1 100644 --- a/src/Symfony/Bundle/TwigBundle/TwigBundle.php +++ b/src/Symfony/Bundle/TwigBundle/TwigBundle.php @@ -16,6 +16,7 @@ use Symfony\Bundle\TwigBundle\DependencyInjection\Compiler\TwigEnvironmentPass; use Symfony\Bundle\TwigBundle\DependencyInjection\Compiler\TwigLoaderPass; use Symfony\Bundle\TwigBundle\DependencyInjection\Compiler\ExceptionListenerPass; +use Symfony\Bundle\TwigBundle\DependencyInjection\Compiler\ExtensionPass; /** * Bundle. @@ -28,6 +29,7 @@ public function build(ContainerBuilder $container) { parent::build($container); + $container->addCompilerPass(new ExtensionPass()); $container->addCompilerPass(new TwigEnvironmentPass()); $container->addCompilerPass(new TwigLoaderPass()); $container->addCompilerPass(new ExceptionListenerPass());