2011-12-21 48 views
1

我想使用的枝条延伸:Symfony的2:number_format枝杈扩展

<?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); 
} 

我创建了一个我包的文件夹嫩枝/扩展,把扩展中。

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

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

并试图使用过滤器在一些像这样的观点:

​​

但我得到了以下错误:

Fatal error: Call to undefined function twig_number_filter() in C:\wamp\www\myapp\app\cache\dev\twig\de\cc\18a233a6ed21bfc26e40b6654c9c.php on line 83

任何想法?

回答

1

试试这个为getFilters方法:

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

Twig_Filter_Function从全局命名空间调用该函数,Twig_Filter_Method$this通过将调用类的方法。

+0

非常感谢!完美的作品。 – Yoot 2011-12-21 16:21:15