Предположим, есть задачка, вывести дерево.
Под рукой PHP, а как view — Twig.
Пусть структура данных на backend будет такой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
$tree = [ [ 'name' => 'foo', 'children' => [ [ 'name' => 'bar', 'children' => [ [ 'name' => 'baz', 'children' => [ ], ], [ 'name' => 'baz', 'children' => [ ], ], ] ] ] ] ]; |
Тогда простроить дерево можно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
{% macro makeTree(node) %} {% import _self as self %} <li> <a href="#">{{ node.name }}</a> {% if node.children|length %} <ul> {% for child in node.children %} {{ self.makeTree(child) }} {% endfor %} </ul> {% endif %} </li> {% endmacro %} {% from _self import makeTree %} {% if tree %} <div class="tree"> <ul> {% for node in tree %} {{ makeTree(node) }} {% endfor %} </ul> </div> {% endif %} |
Получится вложенный список из ul и li.