Menu 带细枝的多级菜单

Menu 带细枝的多级菜单,menu,twig,Menu,Twig,要生成简单菜单,我可以执行以下操作: <ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul> 但是,如果我想创建无尽的深度菜单,比如: <ul> <li>Alpha</li> <li>Bravo</li> <ul> <li>Charlie&l

要生成简单菜单,我可以执行以下操作:

<ul>
  {% for item in items %}
    <li>{{ item }}</li>
  {% endfor %}
</ul>
但是,如果我想创建无尽的深度菜单,比如:

<ul>
  <li>Alpha</li>
  <li>Bravo</li>
    <ul>
      <li>Charlie</li>
      <li>Delta</li>
      <li>Echo</li>
        <ul>
          <li>Foxtrott</li>
        </ul>
      <li>Golf</ul>
    </ul>
  <li>Hotel</li>
  <li>India</li>
</ul>
  • 阿尔法
  • 好极了
    • 查理
    • 三角洲
    • 回音
      • 福克斯特洛特
    • 高尔夫
  • 酒店
  • 印度

  • 谢谢你的帮助

    要在
    twig
    中执行递归,可以使用
    宏的

    {% import _self as macro %}
    
    {{ macro.multilevel(foo) }}
    
    {% macro multilevel(array) %}
        {% import _self as macro %}
        <ul>
        {% for item in array %}
            <li>
                {% if item is iterable %}
                    {{ macro.multilevel(item) }}
                {% else %}
                    {{ item }}
                {% endif %}
            </li>
        {% endfor %}
        </ul>    
    {% endmacro %}
    
    tiwg

    {%宏菜单(链接)%}
    {%import\u self作为宏%}
    
      {%用于链接中的链接%}
    • {%if-not-link['children']|默认值([])为空%} {{macro.menu(链接['children'])} {%endif%}
    • {%endfor%}
    {%endmacro%}

    谢谢。但在您的示例中,在“Beta”之后生成了一个
  • 。那是不对的。
      应直接位于第二个
    • 内。嗯,可能吗?还有可能,在每个
    • 中加入一个,使itam滴度进入而不是进入
    • {% import _self as macro %}
      
      {{ macro.multilevel(foo) }}
      
      {% macro multilevel(array) %}
          {% import _self as macro %}
          <ul>
          {% for item in array %}
              <li>
                  {% if item is iterable %}
                      {{ macro.multilevel(item) }}
                  {% else %}
                      {{ item }}
                  {% endif %}
              </li>
          {% endfor %}
          </ul>    
      {% endmacro %}
      
      $data = [
          'links' => [
              [
                  'title'     => 'alpha',
                  'href'      => 'http://www.alpha.com',
                  'children'  => [],
              ],
              [
                  'title'     => 'beta',
                  'href'      => 'http://www.beta.com',
                  'children'  => [
                      [
                          'title'     => 'charlie',
                          'href'      => 'http://www.charlie.com',
                          'children'  => [],
                      ],
                      [
                          'title'     => 'delta',
                          'href'      => 'http://www.delta.com',
                          'children'  => [],
                      ],
                      [
                          'title'     => 'echo',
                          'href'      => 'http://www.echo.com',
                          'children'  => [
                              [
                                  'title'     => 'foxtrot',
                                  'href'      => 'http://www.foxtrot.com',
                                  'children'  => [],
                              ],                      
                          ],
                      ],              
                  ],
              ],      
          ]   
      ];
      
      {% macro menu(links) %}
          {% import _self as macro %}
          <ul>
          {% for link in links %}
              <li>
                  <a href="{{ link['href'] }}">{{ link['title'] }}</a>
                  {% if not link['children']|default([]) is empty %}
                      {{ macro.menu(link['children']) }}
                  {% endif %}
              </li>
          {% endfor %}
          </ul>     
      {% endmacro %}