Как в Twig сделать древовидный список
Небольшой мануалчик для тех кто хочет с помощью шаблонизатора Twig вывести список в виде дерева либо создать любую древовидную структуру. Реализовано на примере рекурсивного вызова макроса через самого себя.
Для начала создаем файл макроса, к примеру tree.twig с содержимым и создаем макрос tree
{% macro list(items, step = 0) %} {% import _self as tree %} <ul class="tree-list-step-{{ step }}" style="margin-left: {{ step * 25 }}px;"> {% for item in items %} <li> {{ item }} {% if item.childrens %} {{ tree.list(item.childrens, step + 1) }} {% endif %} </li> {% endfor %} </ul> {% endmacro %}
Что бы использовать макрос в коде шаблона создаем файл template.twig с кодом
{% import "tree.twig" as tree %} {{ tree.list(items) }}
На выходе получаем красивый древовидный список с рекурсией.
Более детальная информация по макросам в Twig.