在一个Symfony2项目中,我有一个从数据库中检索大量事件的控制器。这些事件具有start_time、stop_time、类型等属性。
在我的视图中,我希望在一个表中显示这些事件,按start_time排序。我使用Twig作为我的模板。
在将其传递给Twig模板之前,我可以在控制器中进行预排序,但是控制器不应该关心视图是否希望对其进行排序。例如,也许我创建的另一个模板会希望它按类型排序。
现在,有没有一种方法可以将事件对象的集合原样提供给Twig模板,并让它当场为我排序?可以使用'| sort‘筛选器,但在它前面使用类似'| property(start_time)’筛选器,如果您明白我的意思:-)
欢迎任何建议,提前谢谢!
迪特尔
发布于 2016-11-06 09:43:12
futurecat是完全正确的:没有办法做到这一点的开箱即用。即使他的回答已经被接受,为了完整性,我添加了以下内容:
您可以使用snilius/twig-sort-by-field Twig扩展,它将提供您需要的过滤器。
使用composer require snilius/twig-sort-by-field
安装它,并享受它的sortbyfield
过滤器:
{% for item in base | sortbyfield('name') %}
{{ item.name }}
{% endfor %}
发布于 2011-08-26 08:26:47
使用Twig无法按属性对数组进行排序。你仍然有sort
过滤器(在这里描述:http://twig.sensiolabs.org/doc/filters/sort.html),但是它只是对你的数组进行排序,就像php对sort
函数所做的那样。
您可以做的是创建一个TwigExtension并实现您自己的过滤器。它非常简单,并且在这里有很好的文档:http://twig.sensiolabs.org/doc/advanced.html
https://stackoverflow.com/questions/7195862
复制