Twig过滤器仅适用于自定义扩展功能

时间:2013-05-07 12:59:59

标签: twig

有没有办法创建一个只能用于特定功能的Twig过滤器,但没有别的?

例如,假设我有自定义函数集合(),当我对它应用“排序”过滤器时,它将在扩展类中使用过滤函数“sort”而不是默认的twig“sort”过滤器?

1 个答案:

答案 0 :(得分:0)

根据输入类型,无法使用内置过滤器或自定义过滤器。

我的建议是创建一个自定义my_sort过滤器,根据您的需要使用不同的行为。

  • 如果您的变量是Colleciton的实例,那么您使用sort()方法
  • 否则,您可以复制默认sort过滤器的行为。

类似的东西:

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

public function my_sort($stuff)
{
    if (is_array($stuff))
    {
        sort($stuff);
    }
    else if ((is_object($stuff)) && ($stuff instanceof Collection))
    {
        $stuff->sort();
    }
}