1

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

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

为实现许多方法的扩展设置一个全局名称,并且可以使用 bar 和 baz 方法调用“foo” estension,如下所示:

{{ foo.bar }} {{ foo.baz }}

考虑到 getGlobasl 方法现在已弃用并将在 Twig 2 中删除,不使用 getGlobals 怎么可能获得相同的效果?

4

1 回答 1

0

刚才我自己也遇到了。您可以使用 EventListener 来“修复”这个问题,并挂接到 kernel.view:

显然,仅在使用@Templatesensio extra 包中的注释时才有效。

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 }
于 2016-07-30T09:33:42.337 回答