[TwigBundle] fixed usage when Templating is not installed

This commit is contained in:
Fabien Potencier 2017-01-08 11:25:14 -08:00
parent 23294e59ca
commit 6aa98d163d
5 changed files with 10 additions and 9 deletions

View File

@ -45,7 +45,7 @@ class ExtensionPass implements CompilerPassInterface
if ($container->has('form.extension')) { if ($container->has('form.extension')) {
$container->getDefinition('twig.extension.form')->addTag('twig.extension'); $container->getDefinition('twig.extension.form')->addTag('twig.extension');
$reflClass = new \ReflectionClass('Symfony\Bridge\Twig\Extension\FormExtension'); $reflClass = new \ReflectionClass('Symfony\Bridge\Twig\Extension\FormExtension');
$container->getDefinition('twig.loader.filesystem')->addMethodCall('addPath', array(dirname(dirname($reflClass->getFileName())).'/Resources/views/Form')); $container->getDefinition('twig.loader.native_filesystem')->addMethodCall('addPath', array(dirname(dirname($reflClass->getFileName())).'/Resources/views/Form'));
} }
if ($container->has('fragment.handler')) { if ($container->has('fragment.handler')) {
@ -88,11 +88,13 @@ class ExtensionPass implements CompilerPassInterface
$container->getDefinition('twig.extension.debug')->addTag('twig.extension'); $container->getDefinition('twig.extension.debug')->addTag('twig.extension');
} }
if (!$container->has('templating')) { $twigLoader = $container->getDefinition('twig.loader.native_filesystem');
$loader = $container->getDefinition('twig.loader.native_filesystem'); if ($container->has('templating')) {
$loader->addTag('twig.loader'); $loader = $container->getDefinition('twig.loader.filesystem');
$loader->setMethodCalls($container->getDefinition('twig.loader.filesystem')->getMethodCalls()); $loader->setMethodCalls($twigLoader->getMethodCalls());
$twigLoader->clearTag('twig.loader');
} else {
$container->setAlias('twig.loader.filesystem', new Alias('twig.loader.native_filesystem', false)); $container->setAlias('twig.loader.filesystem', new Alias('twig.loader.native_filesystem', false));
} }

View File

@ -77,7 +77,7 @@ class TwigExtension extends Extension
$envConfiguratorDefinition->replaceArgument(4, $config['number_format']['decimal_point']); $envConfiguratorDefinition->replaceArgument(4, $config['number_format']['decimal_point']);
$envConfiguratorDefinition->replaceArgument(5, $config['number_format']['thousands_separator']); $envConfiguratorDefinition->replaceArgument(5, $config['number_format']['thousands_separator']);
$twigFilesystemLoaderDefinition = $container->getDefinition('twig.loader.filesystem'); $twigFilesystemLoaderDefinition = $container->getDefinition('twig.loader.native_filesystem');
// register user-configured paths // register user-configured paths
foreach ($config['paths'] as $path => $namespace) { foreach ($config['paths'] as $path => $namespace) {

View File

@ -10,8 +10,6 @@
<tag name="twig.loader"/> <tag name="twig.loader"/>
</service> </service>
<service id="twig.loader" alias="twig.loader.filesystem" />
<service id="templating.engine.twig" class="%templating.engine.twig.class%" public="false"> <service id="templating.engine.twig" class="%templating.engine.twig.class%" public="false">
<argument type="service" id="twig" /> <argument type="service" id="twig" />
<argument type="service" id="templating.name_parser" /> <argument type="service" id="templating.name_parser" />

View File

@ -53,6 +53,7 @@
<service id="twig.loader.native_filesystem" class="Twig_Loader_Filesystem" public="false"> <service id="twig.loader.native_filesystem" class="Twig_Loader_Filesystem" public="false">
<argument type="collection" /> <argument type="collection" />
<tag name="twig.loader"/>
</service> </service>
<service id="twig.loader.chain" class="%twig.loader.chain.class%" public="false"/> <service id="twig.loader.chain" class="%twig.loader.chain.class%" public="false"/>

View File

@ -187,7 +187,7 @@ class TwigExtensionTest extends TestCase
$this->loadFromFile($container, 'extra', $format); $this->loadFromFile($container, 'extra', $format);
$this->compileContainer($container); $this->compileContainer($container);
$def = $container->getDefinition('twig.loader.filesystem'); $def = $container->getDefinition('twig.loader.native_filesystem');
$paths = array(); $paths = array();
foreach ($def->getMethodCalls() as $call) { foreach ($def->getMethodCalls() as $call) {
if ('addPath' === $call[0] && false === strpos($call[1][0], 'Form')) { if ('addPath' === $call[0] && false === strpos($call[1][0], 'Form')) {