从可用性的角度来看,您是否考虑过使用某种子菜单(可能是侧边栏中的小部件),因为导航这么多嵌套菜单可能有点困难。
无论如何,回到你的问题上来。是的,您应该使用宏。这里有一个我以前使用过的例子,用来生成一个3级的深度引导菜单(但它可以处理更多)。
page.php
$context[\'menu\'][\'header_nav\'] = new TimberMenu(\'Header Nav\');
Timber::render(\'page.twig\', $context);
macros/menus.twig
{% macro embedded_list(items) %}
{% import _self as menus %}
{% for item in items %}
<li>
<a href="{{ item.link }}">{{ item.title }}</a>
{% if item.has_child_class %}
<ul>
{{ menus.embedded_list(item.get_children) }}
</ul>
{% endif %}
</li>
{% endfor %}
{% endmacro %}
page.twig
<ul>
{% import \'macros/menus.twig\' as menus %}
{{ menus.embeddded_list(navs.header_nav.items) }}
</ul>
我从
this 讨论这里有一个
blog post 关于它也一样。