【问题标题】:Twig For Loop Fails to Iterate Over Nested Schema PropertiesTwig For Loop 无法迭代嵌套模式属性
【发布时间】:2019-06-21 23:45:03
【问题描述】:

我是 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 %}

有人知道我哪里出错了吗?

【问题讨论】:

    标签: twig schema


    【解决方案1】:

    您似乎没有正确引用 sub_menu 项目。试试

    {% for sub in item.sub_menu %} ... {% endfor %}
    

    如果sub_menu 数组为空也很有帮助。如果变量为 null、false、空数组或空字符串,则空测试评估为 true

    {% if item.sub_menu is not empty %} ... {% endif %}
    

    【讨论】:

    • 做到了,非常感谢。我只是无法完全正确地使用语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多