当我调用自定义过滤器时,它失败了:
[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 }}',
答案 0 :(得分:1)
发现它作为Generator使用自己的TwigEnvironment,您需要自己注册所有使用的扩展。
/**
* @return \Twig_Environment
*/
public function getTwigEnvironment()
{
$twigEnvironment = parent::getTwigEnvironment();
$twigEnvironment->addExtension(new ConverterTwigExtension());
return $twigEnvironment;
}