首页 文章

Twig批处理和循环索引

提问于
浏览
3

我有一个Twig for循环使用批处理过滤器来包装容器div中的每2个元素 . 我想在这个for循环中为每个第3和第4个div添加一个类名 . 但是,使用 batch 过滤器时似乎无法使用 loop.index . 那是对的吗?在使用批处理过滤器时,如何访问索引?

我试过的是这个:

{% for batch in blog.articles | limit(6) | batch(2) %}
    <div class="blog-art-wrap row-eq-height">
    {% for article in batch %}
      <div class="article {% if loop.index == 3 or loop.index == 4 %}some-class{% endif %}">...... </div>
    {% endfor %}
  </div>
 {% endfor %}

我也尝试了 loop.index3 等......但它似乎忽略了这一点 . 或者这是因为批次是2?所以实际上没有索引3和4 ??如果是这样,你怎么访问每第二批呢?

2 回答

  • 3

    试试这个:

    {% set className = '' %}
    {% if loop.index is divisibleby(3) or loop.index is divisibleby(4) %}
        {% set className = 'some-class' %}
    {% endif %}
    
    <div class="article {{ className }}">...... </div>
    
  • 1

    您可以使用 parent loop variable来引用父上下文 . 例如:

    {% for batch in blog.articles | batch(2) %}
        <div class="blog-art-wrap row-eq-height">
        {% for article in batch %}
          <div class="article {% if loop.parent.loop.index == 3 or loop.parent.loop.index == 4 %}some-class{% endif %}">...... </div>
        {% endfor %}
      </div>
     {% endfor %}
    

    试试this working twigfiddle .

    希望这有帮助

相关问题