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. Ошибка RelationController: "Не удалось найти шаблон (partial) ... traits\ViewMaker.php"

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

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

FrontEnd контроллеры в OctoberCMS

В OctoberCMS нет концепции frontEnd контроллеров. Иными словами, идеология этой CMS не подразумевает возможность просто создать некий ProductController с несколькими action для обслуживания маршрутов Route::method('product/{id}', 'ProductController@show'). Вместо этого предлагается использовать компоненты плагинов. Именно компоненты являются формой frontEnd контроллеров.

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

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