t-alexashka
@t-alexashka
Сразу пишу legacy код

Как в twig разбить список на группы по Х записей?

Всем привет!

Есть список городов, передаю его в twig в виде ассоц.массива.

хотелось бы его выводить не прям списом, а в виде таблицы с группами по первой букве. Возможно ли сделать это в twig или надо в самом php?

Хотелось бы что-то вроде:

А                        Б                  ...
Абакан                   Барнаул
Архангельск              Бийск
....                     ...                ...


а сейчас вот так:

{% for city in city_list %}
    <b><a href="/city/{{ city.city_id }}" title="Страница города {{ city.city_name }}">{{ city.city_name }}</a></b> ( {{ city.city_count }} )<br>
{% endfor %}
  • Вопрос задан
  • 2741 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Есть три варианта:
1) кастомная функция. Все просто, на вход массив, на выход - html. самое простое решение, но оно разовое. То есть либо вам внутри функции придется извращаться с шаблонами и прочим, либо просто захардкодить часть HTML внутри функции, что не есть гуд. В случае смены разметки придется лесть и править функцию. Это такое вот решение влоб.

2) макросы с циклами и ифами внутри. Плюсы - просто реализовать, все в шаблонах. Есть возможность для реюза в будущем, проще менять разметку. Минусы - чуть чуть сложнее сами темплейты.

3) самый крутой как с точки зрения производительности так и реюзабельности - написать свой новый тег, что-то типа index_table или что-то в этом духе, внутри которого определить что-то типа шаблона по которому все это дело отрисовывать. Плюсы: реюзабельно, можно оформить в виде экстеншена и оставить потомкам. Так же так как все будет в итоге компилиться в PHP код. все будет работать очень быстро. Минусы - очень сложно реализовать относительно других вариантов. Зато разберетесь с Twig и может выйти прикольно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 июн. 2024, в 02:23
5000 руб./за проект
26 июн. 2024, в 00:28
5000 руб./за проект
25 июн. 2024, в 23:31
1500 руб./за проект