2011-12-21 3 views
1

Я пытался использовать что Twig Extension:Symfony 2: number_format 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 в моей пачке и поставить расширение внутри.

Затем я изменил файл services.yml использовать его:

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

И пытался использовать фильтр в какой-то точки зрения, как это:

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

Но я получил следующее сообщение об ошибке:

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

Смежные вопросы