Twig批处理和循环索引

时间:2017-07-31 13:36:46

标签: symfony twig

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

我试过的是:

 {% 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 个答案:

答案 0 :(得分:4)

您可以使用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

希望这个帮助

答案 1 :(得分:1)

试试这个:

{% set className = '' %}
{% if loop.index is divisibleby(3) or loop.index is divisibleby(4) %}
    {% set className = 'some-class' %}
{% endif %}

<div class="article {{ className }}">...... </div>