sort
The sort filter sorts sequences and mappings:
1 2 3
{% for user in users|sort %}
...
{% endfor %}
Note
Internally, Twig uses the PHP asort function to maintain index association. It supports Traversable objects by transforming those to arrays.
You can pass an arrow function to configure the sorting:
1 2 3 4 5 6 7 8 9 10 11
{% set fruits = [
{name: 'Apples', quantity: 5},
{name: 'Oranges', quantity: 2},
{name: 'Grapes', quantity: 4},
] %}
{% for fruit in fruits|sort((a, b) => a.quantity <=> b.quantity)|column('name') %}
{{ fruit }}
{% endfor %}
{# output in this order: Oranges, Grapes, Apples #}
Note the usage of the spaceship operator to simplify the comparison.
Tip
The <=> operator compares strings byte per byte; to sort them in the
alphabetical order of a language, use the collate
function: sort((a, b) => collate(a.name, b.name)).
Arguments
arrow: An arrow function