Расширение имени ветки глобальное
До версии 1.12 в расширениях веток было возможно определить метод getGlobals следующим образом:
public function getGlobals()
{
return array($this->getName() => $this);
}
установить глобальное имя для расширений, которые реализуют много методов, и было возможно вызвать расширение "foo" с методами bar и baz, например так:
{{ foo.bar }} {{ foo.baz }}
Учитывая, что метод getGlobasl теперь устарел и будет удален в Twig 2, как можно получить тот же эффект без использования getGlobals?
1 ответ
Сам столкнулся с этим только сейчас. Вы можете "исправить" это используя EventListener, подключившись к kernel.view:
Очевидно, работает только при использовании @Template
аннотации от sensio extra bundle.
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 }