Twig, рекурсивный вывод

Задача отрисовки дерева (меню, категории) неограниченной глубины требует использования рекурсии. Для реализации такой задачи на шаблонизаторе Twig необходимо использовать макросы. Алгоритм такой:

  • Создаём макрос с рекурсивным вызовом внутри
  • Импортируем созданный макрос (даже если внутри одного шаблона)
  • Вызываем отрисовку
{% macro list(items) %}
    {% import _self as tree %}
    <ul class="ui list">
    {% for item in items %}
        <li>
            {{ item }}
            {% if item.childrens %}
                {{ tree.list(item.childrens) }}
            {% endif %}
        </li>
    {% endfor %}
    </ul>
{% endmacro %}

{% import _self as tree %}
{{ tree.list(departments) }}

Похожие записи

Кратко о внедрение зависимостей и сервис контейнере

Cтатья о том, что такое "Внедрение зависимостей" и "Сервис-контейнер" отталкиваясь от их реализации в PHP фреймворках. Статья написана по мотивам статей Фабьена Потенсье, ведущиго разработчика и идеолога фреймворка Symfony, а также документации фреймворка Laravel.