10

在 Symfony2 项目中,我有一个从数据库中检索大量事件的控制器。这些事件具有 start_time、stop_time、type 等属性。

在我看来,我想在一个表格中显示这些事件,按 start_time 排序。我使用 Twig 作为模板。

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

现在,有没有一种方法可以将事件对象的集合原样提供给 Twig 模板,并让它在现场为我排序?也许用'| sort' 过滤器,然后使用类似 '| property(start_time)' 前面的过滤器,如果你知道我的意思:-)

欢迎任何建议,在此先感谢!

迪特

4

2 回答 2

16

没有办法通过 Twig 的属性对数组进行排序。您仍然拥有sort过滤器(此处描述:http: //twig.sensiolabs.org/doc/filters/sort.html),但它只会对您的数组进行排序,就像 php 对sort函数所做的那样。

您可以做的是创建一个 TwigExtension 并实现您自己的过滤器。这很容易,而且记录得很好:http: //twig.sensiolabs.org/doc/advanced.html

于 2011-08-26T08:26:46.790 回答
3

futurecat 是完全正确的:没有办法做到这一点开箱即用。即使他的回答已被接受,为了完整起见,我也会添加以下内容:

您可以使用snilius/twig-sort-by-field Twig 扩展,它将提供您需要的过滤器。

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

{% for item in base | sortbyfield('name') %}
    {{ item.name }}
{% endfor %}
于 2016-11-06T09:43:12.330 回答