Twig是否具有相同的'追加'?

时间:2017-12-09 19:20:03

标签: php html twig template-engine

{% block page %}
   <ul class="gallery">
     {% set foo = 0 %}
     {% for products in prodArr %}
       {% if foo % 4 == 0 %}
         <ul class="slides">
           <li>Product</li>
         </ul>
       {% else %}
         <li>Another Product<li> // this
       {% endif %}
     {% set foo = foo + 1 %}
     {% endfor %}
   </ul>
{% endblock %}

在其他情况下,我希望li会将ul附加到课程幻灯片中。这可能吗?

我希望我的HTML看起来像这样:

<ul class="gallery">
  <ul class="slides">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
  <ul class="slides">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</ul>

2 个答案:

答案 0 :(得分:0)

Twig有embedinclude,但在您的情况下,您可以像这样重构您的代码:

// UPDATED:
<ul class="gallery">
    {% for chunk in products|batch(4) %}
        <ul class="slides">
            {% for product in chunk %}
                <li>{{ product.title }}</li> // assuming you have title property
            {% endfor %}
        </ul>
    {% endfor %}
</ul>

P.S。不幸的是我无法测试它,但你会得到一般的想法;)

答案 1 :(得分:0)

是的,这是可能的。但在这种情况下,你必须这样纠正:

{% block page %}
    <ul class="gallery">
      {% set foo = 0 %}
      {% for products in prodArr %}
          {% if foo % 4 == 0 %}
              **<ul class="slides">**
          {% endif %}

          <li>Product</li>

          {% if foo % 4 == 3 or foo == (prodArr|length - 1) %}
              **</ul>**
          {% endif %}

     {% set foo = foo + 1 %}
     {% endfor %}
    </ul>
    {% endblock %}