在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的情况下获得相同的效果?
答案 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 }