Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 在Symfony2中的模板排序:使用细枝按属性对对象集合进行排序_Model View Controller_Templates_View_Symfony_Twig - Fatal编程技术网

Model view controller 在Symfony2中的模板排序:使用细枝按属性对对象集合进行排序

Model view controller 在Symfony2中的模板排序:使用细枝按属性对对象集合进行排序,model-view-controller,templates,view,symfony,twig,Model View Controller,Templates,View,Symfony,Twig,在一个Symfony2项目中,我有一个从数据库中检索大量事件的控制器。这些事件具有开始时间、停止时间、类型等属性 在我看来,我想在一个表中显示这些事件,按开始时间排序。我用树枝做模板 我可以在将其传递给细枝模板之前在控制器中预先排序,但是控制器不应该关心视图是否希望对其排序。例如,我创建的另一个模板可能希望它按类型排序 现在,有没有一种方法可以让我将事件对象的集合按原样提供给细枝模板,并让它当场为我排序? 可能是一个“| sort”过滤器,但如果你知道我的意思的话,它前面有一个类似于“| pro

在一个Symfony2项目中,我有一个从数据库中检索大量事件的控制器。这些事件具有开始时间、停止时间、类型等属性

在我看来,我想在一个表中显示这些事件,按开始时间排序。我用树枝做模板

我可以在将其传递给细枝模板之前在控制器中预先排序,但是控制器不应该关心视图是否希望对其排序。例如,我创建的另一个模板可能希望它按类型排序

现在,有没有一种方法可以让我将事件对象的集合按原样提供给细枝模板,并让它当场为我排序? 可能是一个“| sort”过滤器,但如果你知道我的意思的话,它前面有一个类似于“| property(start_time)”的过滤器:-)

欢迎任何意见,提前感谢


Dieter

无法使用Twig按属性对数组进行排序。您仍然有
sort
过滤器(这里描述:),但它只会像php使用
sort
函数一样对数组进行排序


您可以做的是创建TwigExtension并实现您自己的过滤器。这很简单,并且在这里有很好的文档记录:

futurecat完全正确:没有现成的方法可以做到这一点。即使他的回答被接受,我也要补充以下内容以确保完整性:

您可以使用细枝扩展,它将提供所需的过滤器

使用
composer require snilius/twig sort by field
安装它,并享受其
sortbyfield
过滤器:

{% for item in base | sortbyfield('name') %}
    {{ item.name }}
{% endfor %}

这就是我需要知道的。谢谢你的分机提示!我再也不能亲自尝试了,但这似乎正是我当时所需要的。从现在起,我将把这个标记为答案。感谢你和@futurecat!