Twig的自定义过滤器不起作用

时间:2013-01-25 15:07:04

标签: symfony twig

我从文档中创建了一个简单的Twig过滤器:

public function getFilters() {

        return array(
            'price' => new \Twig_Filter_Method($this, 'priceFilter'),
        );
    }


    public function priceFilter($number, $decimals = 0, $decPoint = '.', $thousandsSep = ',')
    {
        $price = number_format($number, $decimals, $decPoint, $thousandsSep);
        $price = '$' . $price;

        return $price;
    }

它已在配置中注册(因为在该文件中我有一个运行良好的功能):

services:
    sybio.twig_extension:
        class: %sybio.twig_extension.class%
        tags:
            - { name: twig.extension }

但它没有用,说The filter "price" does not exist。怎么样?

2 个答案:

答案 0 :(得分:4)

首先要确保你在树枝类中有这个功能

public function getName()
    {
        return 'acme_extension';
    }

然后尝试将其更改为完整的类名以进行调试,然后您可以更改它

class: %sybio.twig_extension.class%class: Acme\DemoBundle\Twig\AcmeExtension

答案 1 :(得分:1)

可能你可以使用我的简单例子。

类过滤器:

namespace Project\Bundle\Twig;

class Price extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            'price' => new \Twig_Filter_Method($this, 'priceFilter'),
        );
    }

    public function priceFilter($arg)
    {
        return number_format($arg);
    }

    public function getName()
    {
        return 'price';
    }
}

配置:

services:
    bundle.twig.price:
        class: Project\Bundle\Twig\Price
        tags:
            - { name: twig.extension }