【问题标题】:twig extension name global树枝扩展名全局
【发布时间】:2016-02-20 01:00:20
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: globals twig-extension


    【解决方案1】:

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

    显然只有在使用 sensio extra 包中的 @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 }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      相关资源
      最近更新 更多