Деревья в PHP + Twig 2.0

Предположим, есть задачка, вывести дерево.

Под рукой PHP, а как view — Twig.

Пусть структура данных на backend будет такой:

$tree = [

            [
                'name' => 'foo',
                'children' => [
                    [
                        'name' => 'bar',
                        'children' => [
                            [
                                'name' => 'baz',
                                'children' => [

                                ],
                            ],

                            [
                                'name' => 'baz',
                                'children' => [

                                ],
                            ],


                        ]
                    ]
                ]
            ]

        ];

Тогда простроить дерево можно так:

{% 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.