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

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

Собственные сообщения об ошибках валидации форм OctoberCMS

Во время разработки модели данных OctoberCMS при необходимости, можно использовать собственные сообщения об ошибках валидации полей формы вместо сообщения The :attribute field is required. по-умолчанию. В статье показывается как, достаточно просто, это делается.

OctoberCMS. Ошибка RelationController: "Не удалось найти шаблон (partial) ... traits\ViewMaker.php"

В контроллере поведения RelationController при нажатии на кнопке "Cоздание" вылетает ошибка с подобным содержаним

"Не удалось найти шаблон (partial) с именем _comments.htm." on line 91
of ...\modules\system\traits\ViewMaker.php