twig扩展名全局

时间:2015-11-18 10:29:02

标签: globals twig-extension

在twig扩展版本1.12之前,可以定义一个这样的getGlobals方法:

    <Border x:Name="br1" Background="Blue" >
         <RadioButton Checked="radio1_Checked"  x:Name="radio1" />
    </Border>

     <Border x:Name="br2" Background="Blue" >
         <RadioButton Checked="radio2_Checked"  x:Name="radio2" />
      </Border>

为实现许多方法的扩展设置全局名称,并且可以调用&#34; foo&#34;像这样的bar和baz方法的扩展:

public function getGlobals()
{
    return array($this->getName() => $this);
}

考虑到现在不推荐使用getGlobasl方法,并且将在Twig 2中删除它,如何在不使用getGlobals的情况下获得相同的效果?

1 个答案:

答案 0 :(得分:0)

刚才进入这个问题。你可以修复&#39;这使用EventListener,挂钩到kernel.view:

显然只有在使用sensio extra bundle中的@Template注释时才有效。

public function onKernelView(GetResponseForControllerResultEvent $event)
{
    $params = $event->getControllerResult();
    $params['baddesign'] = $this->myservice->getSomethingThatsUsedEverywhere();
    $event->setControllerResult($params);
}
public static function getSubscribedEvents()
{
    return array(
        KernelEvents::VIEW => 'onKernelView',
    );
}
mybundle.globalvarlistener:
    class: MyBundle\EventListener\MyListener
    tags:
        - { name: kernel.event_subscriber }