Symfony / TWIG,按键排序数组

5

是否可以在没有Twig扩展的情况下按键对数组进行排序?

我有这样一个数组:

{key1 : object1, key2 : object2...)

当我使用{% for t in tab|sort%}时,它会给我一个按对象ID排序而不是按键排序的数组。

没有Twig扩展的话就无法做到这一点吗?


4
在控制器中对其进行排序。 - Cid
3
顺便问一下,创建一个Twig扩展有什么问题吗? - Cid
1
哦,是的!我不知道为什么我一定要用twig来做这件事...我会在控制器中进行排序,我的错,抱歉。 - Zayders
1个回答

6
据我所知,没有一个筛选器可以根据数组键进行排序。
但是,如果您需要创建一个筛选器,您可以在扩展的Twig扩展文件中这样做:
创建此函数,
public function ksort($array) {
    ksort($array);        
    return $array;
}

在可用的过滤器中钩住函数。

public function getFilters() {
    $this->filters['ksort'] = new \Twig_SimpleFilter('ksort', array($this, 'ksort'));        
    return $this->filters;
}

并且调用过滤器,

{% for a in array | ksort %}
    <h2>{{ a }}</h2>   
{% endfor %}    

欢呼声

1
为什么不直接将过滤器命名为 ksort 而不是 twigKSort? :D - DarkBee
@DarkBee:嗯,不错的想法。我只是想让它从Twig可用的过滤器中脱颖而出,因此我在开头加了那个“twig”东西。本来可以叫做“custom”或其他什么名字的。我会让它更一致,改成“ksort” :D 。谢谢 :) - Anjana Silva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接