1

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

  [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 }}',
4

1 回答 1

1

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

/**
 * @return \Twig_Environment
 */
public function getTwigEnvironment()
{
    $twigEnvironment = parent::getTwigEnvironment();

    $twigEnvironment->addExtension(new ConverterTwigExtension());

    return $twigEnvironment;
}
于 2016-04-17T12:33:08.830 回答