在symfony2中的另一个过滤器树枝内使用过滤器

时间:2016-04-23 01:35:29

标签: symfony twig

我需要知道如何从另一个过滤器获取过滤器,我有下一个代码。也许我必须使用Twig_Enviroment,但我不知道如何。

理念是:

  • 过滤器A转换单词中的数字。这个完成了。
  • 过滤器B应使用过滤器A将货币值转换为单词。

    class CurrencyToWordsExtension extends \ Twig_Extension {     公共函数getFilters()     {         返回数组(                 new \ Twig_SimpleFilter('currencyToWords',array($ this,'currencyToWordsFilter'))             );     }

    function currencyToWordsFilter($number)
    {
        // $toWords = $env->getFilter('toWords');
        $number = number_format((float)$number, 2);
        $pesos = floor($number);
        $centavos = ($number - $pesos) * 100;
    
        return $pesos .' con '. $centavos;
    
    }
    
    public function getName()
    {
        return 'currencyToWords';
    }
    

    }

2 个答案:

答案 0 :(得分:2)

ThreadPool

答案 1 :(得分:1)

有很多可能性:

  • 将逻辑从过滤器移出到单独的类。过滤器应该是复杂逻辑的轻包装。
  • 在同一个Twig Extension类中移动两个过滤器(如果它们很简单并且都是您的代码)。然后你可以调用内部类方法。
  • 将依赖项注入services.yml
  • 中的Twig Extension类构造函数

<强> services.yml

**Forbidden**
You dont have permission to access /folder/folder on this server.

<强> CurrencyExtension.php

services:
    twig.currency_extension:
        class: AppBundle\Twig\CurrencyExtension
        public: false
        arguments: [ '@twig.words_extension' ]
        tags:
            - { name: twig.extension }

还可以尝试根据twig约定命名过滤器:snake_case,short。