Drupal → Рендеринг дерева в Twig шаблоне с помощью макроса

09.06.2018

Есть twig шаблон, который принимает на вход переменную tree в формате:

$tree = [
  0 => [
    'data' => 'Item 1',
    'childrens' => [
      0 => ['data' => 'Item 1.1'],
      1 => ['data' => 'Item 1.2'],
    ],
  ],
  1 => ['data' => 'Item 2'],
  2 => [...]
];

Нужно вывести эту переменную в виде дерева состоящего из вложенных списков ul/li.

Один из способов это макросы:

{% macro render_tree(tree) %}
  {% import _self as macros %}
  <ul>
    {% for item in tree %}
      <li>
        {{ item.data }}
        {% if item.childrens %}
          {{ macros.render_tree(item.childrens) }}
        {% endif %}
      </li>
    {% endfor %}
  </ul>
{% endmacro %}

{% import _self as macros %}
{{ macros.render_tree(tree) }}

Так выводятся например системные меню — menu.html.twig.

Написанное актуально для
Drupal 8
Похожие записи

Добавить комментарий