2011-12-21 96 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