Я новичок в twig, и я пытаюсь создать навигационное меню с подменю из предоставленной схемы, которая выглядит так:
menu_items: [
{
url: 'http://testurl.com',
text: 'Menu Item 1',
active: true,
sub_menu: [
{
url: 'http://testurl.com',
text: 'Sub menu Item 1',
},
{
url: 'http://testurl.com',
text: 'Sub menu Item 2',
},
],
},
]
Меню отображается просто отлично, но я изо всех сил пытаюсь получить правильный синтаксис, чтобы заполнить эти элементы подменю. Я вставил оператор if, потому что не всегда есть подменю, а затем цикл for для создания элемента списка для каждого элемента подменю в схеме, но, увы.
{% if menu_items %}
<nav>
<ul>
{% for item in menu_items %}
<li>
<a href = "{{ item.url }}">{{ item.text }}</a>
{% if item.sub_menu %}
<ul>
{% for sub_menu in item %}
<li>
<a href = "{{ item.sub_menu.url }}">
{{ item.sub_menu.text }}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</nav>
{% endif %}
Кто-нибудь знает, где я ошибаюсь?





Похоже, вы неправильно ссылаетесь на sub_menu элементы. Пытаться
{% for sub in item.sub_menu %} ... {% endfor %}
Также полезно, если массив sub_menu пуст. Пустой тест оценивается как true, если переменная имеет значение null, false, пустой массив или пустую строку.
{% if item.sub_menu is not empty %} ... {% endif %}
Вот и получилось, большое спасибо. Я просто не мог правильно понять синтаксис.