如何告诉 Symfony2 不要app
在模板中设置全局变量(如)?我想设置自己的app
变量,但Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables Object
如果我在控制器中覆盖它,它就会有类型事件。
问问题
511 次
1 回答
1
我认为这是这样的可能性(基本上从来没有因为app
var 可以派上用场;))
app
global 被添加到Symfony\Bundle\TwigBundle\TwigEngine
(for twig)的构造函数和Symfony\Bundle\FrameworkBundle\Templating\PhpEngine
(for php)的构造函数中
但是当你不传递GlobalVariables
给构造函数(可以为空)时,它不会设置app
变量。所以你可以像这样覆盖templating
服务:
<service id="templating" class="Acme\DemoBundle\Templating\TwigEngine">
<argument type="service" id="twig" />
<argument type="service" id="templating.name_parser" />
<argument type="service" id="templating.locator" />
</service>
和 php 文件:
<?php
namespace Acme\DemoBundle\Templating;
use Symfony\Bundle\TwigBundle\TwigEngine as BaseEngine;
use Symfony\Component\Templating\TemplateNameParserInterface;
use Symfony\Component\Config\FileLocatorInterface;
class TwigEngine extends BaseEngine
{
public function __construct(\Twig_Environment $environment, TemplateNameParserInterface $parser, FileLocatorInterface $locator)
{
parent::__construct($environment, $parser, $locator);
}
}
您应该知道,您也可以在没有它的情况下实现自己的全局变量......只需定义自己的templating.globals
服务来替换原来的服务。
于 2013-02-06T10:43:13.853 回答