在Symfony2项目中,我有一个控制器,可以从数据库中检索许多事件。这些事件具有start_time,stop_time,type等属性。
在我看来,我想在一个表中显示这些事件,按start_time排序。我使用Twig作为我的模板。
我可以在将其传递给Twig模板之前对我的控制器进行预先排序,但是控制器不应该关心视图是否要对其进行排序。也许我创建的另一个模板会希望按类型排序,例如。
现在,有没有办法可以将事件对象的集合按原样提供给Twig模板,并让它在现场为我排序? 也许用'|排序'过滤,但后来用'| property(start_time)'在它前面过滤,如果你知道我的意思: - )
欢迎任何建议,谢谢!
迪特
答案 0 :(得分:15)
无法使用Twig按属性对数组进行排序。您仍然拥有sort
过滤器(此处描述:http://twig.sensiolabs.org/doc/filters/sort.html),但它只会对您的数组进行排序,就像php将使用sort
函数一样。
您可以做的是创建一个TwigExtension并实现您自己的过滤器。这里非常容易并且有很好的文档记录:http://twig.sensiolabs.org/doc/advanced.html
答案 1 :(得分:3)
您可以使用snilius/twig-sort-by-field Twig扩展程序,它将提供您需要的过滤器。
使用composer require snilius/twig-sort-by-field
安装,并享受其sortbyfield
过滤器:
{% for item in base | sortbyfield('name') %}
{{ item.name }}
{% endfor %}