以 Twig 中从 x 到 y 的第 n 个索引为目标
Targeting every nth index from x to y in Twig
我在复杂网格(标记为简单的单级 HTML 列表)的 for
循环中遇到 loop.index
问题。我在网格 "cell"(<li>
)的树枝部分中有一个 loop_index
变量,它等于 loop.index
。
最初我对循环中的第一个项目进行了这个简单的基于特定数字的检查。
{% set class = 'green' %}
{% if (loop_index > 1 and loop_index < 5) or (loop_index > 7 and loop_index < 12) %}
{% set class = 'orange' %}
{% endif %}
但现在应该扩展它以在循环中包含可能无限数量的项目。因此,不仅第 2-4 项和第 8-11 项会变成 orange
,第 15-18 项也会变成
基本上我需要这样循环2个类(橙色,绿色):
- 2-4 - 橙色
- (重复模式从这里开始:)
- 5-7 - 绿色(3 批)
- 8-11 - 橙色(一批 4 个)
- 12-14 - 绿色(3 批)
- 15-18 - 橙色(一批 4 个)
- 19-21 - 绿色(3 批)
- 22-25 - 橙色(一批 4 个)
- ...
我试图为此雇用 batch
and cycle
,但他们似乎不适合这样做。 batch
似乎不适用于 "unlimited" 循环,并且 cycle
似乎不适用于具有相同项目批次的重复模式(与循环未分组的单个项目相反)。 divisible by
在这种情况下也无法满足我的需要。
如何根据 loop.index
的值更改 类?我无法在此处使用 for
循环或在其外部工作 — 所有工作都需要在网格 "cell" 部分内部完成。
您可以查看rest of the division。这里有一个可行的解决方案:
{% for i in 1..30 %}
{% set class = 'green' %}
{% set loop_index = loop.index %}
{% if (loop_index %7 >= 1 and loop_index %7 < 5) %}
{% set class = 'orange' %}
{% endif %}
* {{ i }} {{class}}
{% endfor %}
这将输出为:
* 5 green
* 6 green
* 7 green
* 8 orange
* 9 orange
* 10 orange
* 11 orange
* 12 green
* 13 green
* 14 green
* 15 orange
* 16 orange
* 17 orange
* 18 orange
* 19 green
* 20 green
* 21 green
* 22 orange
* 23 orange
* 24 orange
* 25 orange
* 26 green
* 27 green
你可以检查输出in this working twigfiddle
我在复杂网格(标记为简单的单级 HTML 列表)的 for
循环中遇到 loop.index
问题。我在网格 "cell"(<li>
)的树枝部分中有一个 loop_index
变量,它等于 loop.index
。
最初我对循环中的第一个项目进行了这个简单的基于特定数字的检查。
{% set class = 'green' %}
{% if (loop_index > 1 and loop_index < 5) or (loop_index > 7 and loop_index < 12) %}
{% set class = 'orange' %}
{% endif %}
但现在应该扩展它以在循环中包含可能无限数量的项目。因此,不仅第 2-4 项和第 8-11 项会变成 orange
,第 15-18 项也会变成
基本上我需要这样循环2个类(橙色,绿色):
- 2-4 - 橙色
- (重复模式从这里开始:)
- 5-7 - 绿色(3 批)
- 8-11 - 橙色(一批 4 个)
- 12-14 - 绿色(3 批)
- 15-18 - 橙色(一批 4 个)
- 19-21 - 绿色(3 批)
- 22-25 - 橙色(一批 4 个)
- ...
我试图为此雇用 batch
and cycle
,但他们似乎不适合这样做。 batch
似乎不适用于 "unlimited" 循环,并且 cycle
似乎不适用于具有相同项目批次的重复模式(与循环未分组的单个项目相反)。 divisible by
在这种情况下也无法满足我的需要。
如何根据 loop.index
的值更改 类?我无法在此处使用 for
循环或在其外部工作 — 所有工作都需要在网格 "cell" 部分内部完成。
您可以查看rest of the division。这里有一个可行的解决方案:
{% for i in 1..30 %}
{% set class = 'green' %}
{% set loop_index = loop.index %}
{% if (loop_index %7 >= 1 and loop_index %7 < 5) %}
{% set class = 'orange' %}
{% endif %}
* {{ i }} {{class}}
{% endfor %}
这将输出为:
* 5 green
* 6 green
* 7 green
* 8 orange
* 9 orange
* 10 orange
* 11 orange
* 12 green
* 13 green
* 14 green
* 15 orange
* 16 orange
* 17 orange
* 18 orange
* 19 green
* 20 green
* 21 green
* 22 orange
* 23 orange
* 24 orange
* 25 orange
* 26 green
* 27 green
你可以检查输出in this working twigfiddle