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) }}

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

Об автозагрузке в PHP

Статья раскрывает аспекты автозагрузки в PHP с использованием __autoload, spl_autoload_register, автозагрузки через composer (PSR-4) с небольшим экскурсом в историю.

01 декабря 2017 г. в PHP