Symfony 2: число_формат Расширение ветки - PullRequest
1 голос
/ 21 декабря 2011

Я пытался использовать это расширение Twig:

<?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 в своем комплекте и поместил расширение внутри.

Затем я изменил службы.yml файл, чтобы использовать его:

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

И попытался использовать фильтр в некотором представлении, подобном этому:

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

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

Неустранимая ошибка: вызов неопределенной функции twig_number_filter () в C: \ wamp \ www \ myapp \ app \ cache \ dev \ twig \ de \ cc \ 18a233a6ed21bfc26e40b6654c9c.php в строке 83

Любойидея?

1 Ответ

1 голос
/ 21 декабря 2011

Попробуйте это для getFilters метода:

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

Twig_Filter_Function вызывает функцию из глобального пространства имен, Twig_Filter_Method с переданным $this вызовет ваш метод класса.

...