Drupal → Рендеринг дерева в Twig шаблоне с помощью макроса
Есть 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.
Оставить комментарий