我有实体与字段:
用户
还有更多.我发送给具有对象用户的Twig数组.
在表格中的树枝显示用户:
{% for user in users %}
<td>{{ user.name }}<td> <td>{{ user.lastname}}<td> <td>{{ user.age}}<td>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
如何在Twig中通过名称或姓氏等对用户进行排序.我想创建可排序表.
cga*_*olo 18
从 Twig 2.12(2019 年 10 月 5 日发布)开始,您可以sort在arrow参数中使用带有箭头函数的过滤器。
例如,按名称排序:
{% for user in users|sort((a, b) => a.name <=> b.name) %}
<td>{{ user.name }}</td> <td>{{ user.lastname}}</td> <td>{{ user.age}}</td>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
树枝文档:https : //twig.symfony.com/doc/2.x/filters/sort.html
unb*_*eak 16
是的,您可以添加自定义过滤器:
{% for user in users|usort %}
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
然后将扩展/新过滤器添加到Twig:
new \Twig_SimpleFilter('usort', array($this, 'usortFilter'))
public function usortFilter($item){
usort($item, function ($item1, $item2) {
if ($item1['orderNo'] == $item2['orderNo']) return 0;
return $item1['orderNo'] < $item2['orderNo'] ? -1 : 1;
});
return $item;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
反向排序:
{% for user in users|sort|reverse %}
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
排序和反转是可组合的。
您必须在模型中使用“Order by”子句来执行此操作。但是,如果您想要一个可以动态排序的表,您应该关注 jQuery tablesorter 插件(如果您不想使用 jQuery,则可以使用等效插件)。