Сортировка в шаблоне, в Symfony2: использование Twig для сортировки коллекции объектов по свойствам
в проекте Symfony2 у меня есть контроллер, который извлекает ряд инцидентов из базы данных. Эти инциденты имеют такие свойства, как start_time, stop_time, type и т. д.
на мой взгляд, я хочу показать эти инциденты в таблице, отсортированный по start_time. Я использую прутик для своих шаблонов.
Я могу предварительно сортировать в своем контроллере, прежде чем передавать его в шаблон Twig, но imho контроллер не должен заботиться о том, что представление хочет его отсортировать. Может быть, еще один шаблон, который я create захочет, чтобы он был отсортирован по типу, например.
теперь, есть ли способ, которым я могу дать коллекцию объектов инцидентов как есть шаблону ветки, и отсортировать его для меня на месте? Возможно, с фильтром "/ sort", но затем с чем-то вроде фильтра "| property(start_time) " перед ним, если вы знаете, что я имею в виду: -)
любые советы приветствуются, заранее спасибо!
Дитер
2 ответов
futurecat абсолютно прав: нет никакого способа сделать это из коробки. Даже если его ответ был принят, я добавляю это для полноты:
можно использовать снилий / веточка-сортировка по полю расширение веточки, которое обеспечит фильтр вам.
установите его с помощью composer require snilius/twig-sort-by-field
и sortbyfield
фильтр:
{% for item in base | sortbyfield('name') %}
{{ item.name }}
{% endfor %}
невозможно отсортировать массив по свойству с помощью Twig. У вас все еще есть sort
фильтр (описано здесь:http://twig.sensiolabs.org/doc/filters/sort.html) но он просто отсортирует Ваш массив, как php будет делать с .
что вы можете сделать, это создать TwigExtension и реализовать свой собственный фильтр. Это очень легко и очень хорошо документировано здесь:http://twig.sensiolabs.org/doc/advanced.html