Twig遍历多级菜单遇Array转字符串错误,求解决方案
解决Twig多级菜单的"Array to string conversion"错误
你的菜单数组结构完全没问题,报错的根源出在Twig代码的子菜单遍历逻辑上——你现在写的{% for items in menuitem %}是在遍历整个父菜单项的所有属性(包括title和items),当遍历到title这个字符串属性时,Twig会尝试把它当成数组处理,自然就抛出了"Array to string conversion"错误。
不需要修改菜单数组,只需要修正子菜单的遍历对象,把它指向menuitem.items而不是整个menuitem,就能解决问题。修改后的完整Twig代码如下:
{% for menuitem in site.menu %} {% if menuitem.items is defined %} <li class="c-drop"> <a href="#">{{ menuitem.title }}</a> <div class="c-drop-menu"> <ul class="list-inline"> {% for subitem in menuitem.items %} {# 修正为遍历menuitem.items #} <li><a href="{{ subitem.url }}">{{ subitem.title }}</a></li> {% endfor %} </ul> </div> </li> {% else %} <li><a href="{{ menuitem.url }}">{{ menuitem.title }}</a></li> {% endif %} {% endfor %}
效果说明
- 普通菜单项(Nieuws、PSV、PSV Watchers、Transfers)会直接渲染成带对应URL的
<li>标签 - 包含
items的菜单项(Standen、Kalender)会渲染成带下拉容器的结构,子菜单会正确遍历menuitem.items里的每一项
内容的提问来源于stack exchange,提问作者abbob1
相关产品推荐
相关产品推荐

