发电机不提供Twig滤波器

时间:2016-04-17 12:15:04

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

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

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

1 个答案:

答案 0 :(得分:1)

发现它作为Generator使用自己的TwigEnvironment,您需要自己注册所有使用的扩展。

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

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

    return $twigEnvironment;
}