Symfony 2:number_format Twig Extension

时间:2011-12-21 16:06:24

标签: symfony twig number-formatting

我尝试使用Twig Extension:

<?php

class Twig_Extensions_Extension_Number extends Twig_Extension
{
    /**
* Returns a list of filters.
*
* @return array
*/
    public function getFilters()
    {
        return array('number' => new Twig_Filter_Function('twig_number_filter'));
    }

    /**
* Name of this extension
*
* @return string
*/
    public function getName()
    {
        return 'Number';
    }
}

function twig_number_filter($number, $decimals = 0, $dec_point = '.', $thousands_sep = ',')
{
    return number_format($number, $decimals, $dec_point, $thousands_sep);
}

我在我的包中创建了一个文件夹Twig / Extension,并将Extension放在里面。

然后我修改了services.yml文件以使用它:

services:
    project.twig.extension:
        class: App\AppBundle\Twig\Extension\NumberExtension
        tags:
            -  { name: twig.extension }

并尝试在某些视图中使用过滤器:

{{ 50|number(2, ".", ",") }}

但是我收到了以下错误:

  

致命错误:调用未定义的函数twig_number_filter()   C:\瓦帕\ WWW \ MyApp的\应用\缓存\ dev的\树枝\德\立方厘米\ 18a233a6ed21bfc26e40b6654c9c.php   在第83行

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试使用getFilters方法:

public function getFilters()
{
    return array('number' => new \Twig_Filter_Method($this, 'twig_number_filter'));
}

Twig_Filter_Function正在调用全局命名空间中的函数,传递Twig_Filter_Method的{​​{1}}将调用您的类方法。