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 %}
  • Вопрос задан
  • 2736 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Есть три варианта:
1) кастомная функция. Все просто, на вход массив, на выход - html. самое простое решение, но оно разовое. То есть либо вам внутри функции придется извращаться с шаблонами и прочим, либо просто захардкодить часть HTML внутри функции, что не есть гуд. В случае смены разметки придется лесть и править функцию. Это такое вот решение влоб.

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 19:18
50000 руб./за проект
24 апр. 2024, в 19:05
15000 руб./за проект
24 апр. 2024, в 18:39
80000 руб./за проект