2

Symfony2 にグローバル変数 ( などapp) をテンプレートに設定しないように指示するには? app独自の変数を設定したいのですがSymfony\Bundle\FrameworkBundle\Templating\GlobalVariables Object、コントローラーで上書きするとイベント型になります。

4

1 に答える 1

1

私はそれがそのような可能性だと思います(基本的に、appvarが便利になる原因はありませんでした;))

appglobal はSymfony\Bundle\TwigBundle\TwigEngine(twig の場合) のコンストラクターとSymfony\Bundle\FrameworkBundle\Templating\PhpEngine(php の場合)のコンストラクターに追加されます。

ただし、コンストラクターに渡さない場合GlobalVariables(null の場合もあります)、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 に答える