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