排序后在树枝中排序数组

Ordering array in twig after sorting it

假设我在 twig 中有数组

{% set temp = [
  {"name": 'Tom', 'lname': 'Marko'},
  {"name": 'Nick', 'lname': 'Montana'},
  {"name": 'Tina', 'lname': 'Marko'},
  {"name": 'Mike', 'lname': 'Miles'}
] %}

是否可以先按 lname 排序,然后在模板中按 name 排序,使其看起来像

{% set temp = [
  {"name": 'Tina', 'lname': 'Marko'},
  {"name": 'Tom', 'lname': 'Marko'},
  {"name": 'Mike', 'lname': 'Miles'},
  {"name": 'Nick', 'lname': 'Montana'}
] %}

或者我必须在传递给模板或创建扩展以使其在模板中成为可能之前对其进行排序和排序?

根据https://twig.symfony.com/doc/2.x/filters/sort.html

你需要:

{% set temp = [
  {"name": 'Tom', 'lname': 'Marko'},
  {"name": 'Nick', 'lname': 'Montana'},
  {"name": 'Tina', 'lname': 'Marko'},
  {"name": 'Mike', 'lname': 'Miles'}
]%}

{% for tmp in temp|sort((a, b) => (a.name <=> b.name))|sort((a, b) => (a.lname <=> b.lname)) %}
    {{ tmp.name }} {{ tmp.lname }}
{% endfor %}

这产量:

Tina Marko
Tom Marko
Mike Miles
Nick Montana

demo