【问题标题】:Twig filter not available in Generator生成器中不提供 Twig 过滤器
【发布时间】:2016-08-09 03:35:47
【问题描述】:

当我调用我的自定义过滤器时,它失败了:

  [Twig_Error_Syntax] Unknown "snake_case" filter in "controller/controller.php.twig" at line 86.

服务已注册:

services:
l91_sulu_backend.twig.converter.extension:
    class: L91\Sulu\Bundle\BackendBundle\Twig\ConverterTwigExtension
    tags:
        - { name: twig.extension }

它在container:debug下列出

类如下所示:

<?php

namespace L91\Sulu\Bundle\BackendBundle\Twig;

class ConverterTwigExtension extends \Twig_Extension
{
    /**
     * {@inheritdoc}
     */
    public function getFilters()
    {
        return [
            new \Twig_SimpleFilter('snake_case', [$this, 'snakeCaseFilter']),
        ];
    }

    /**
     * @param string $input
     *
     * @return string
     */
    public function snakeCaseFilter($input)
    {
        return strrev($input); // just to test
    }

    /**
     * {@inheritdoc}
     */
    public function getName()
    {
        return 'l91_sulu_backend_converter';
    }
}

还有twig:debug 列出我的snake_case 过滤器。

twig 文件由 symfony 命令调用的 Generator 渲染。

这里是过滤器的调用

'{{ translatePrefix }}.{{ column|snake_case }}',

【问题讨论】:

    标签: symfony twig generator symfony-2.6 twig-extension


    【解决方案1】:

    发现它作为一个生成器使用它自己的 TwigEnvironment 你需要自己注册所有使用的扩展。

    /**
     * @return \Twig_Environment
     */
    public function getTwigEnvironment()
    {
        $twigEnvironment = parent::getTwigEnvironment();
    
        $twigEnvironment->addExtension(new ConverterTwigExtension());
    
        return $twigEnvironment;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2014-07-14
      • 2018-10-18
      相关资源
      最近更新 更多