我无论如何也想不出如何在Twig循环中每隔一次迭代添加一个</tr><tr>
。
例如:
$numArray = array(12,13,14,15,16,17,18);
传递给twig,我会循环一个表,如下所示:
<table>
{% for num in numArray %}
<tr>
<td>
{{num}}
</td>
</tr>
{% endfor %}
</table>
这将输出:
+-----------+
| 12 |
+-----------+
| 13 |
+-----------+
| 14 |
+-----------+
| 15 |
+-----------+
| 16 |
+-----------+
| 17 |
+-----------+
| 18 |
+-----------+
我想做的是得到这样的东西:
+-----------+-----------+
| 12 | 13 |
+-----------+-----------+
| 14 | 15 |
+-----------+-----------+
| 16 | 17 |
+-----------+-----------+
| 18 | |
+-----------+-----------+
但我无论如何也想不出一种方法,可以将我的行输入替换为任何看起来不太老套的东西。老实说,我甚至不能让hacky去工作。有什么方法可以解决这个问题吗?或者,我应该编写自己的扩展吗?
发布于 2012-02-25 17:03:40
像这样的东西会起作用的:
<table>
<tr>
{% for num in numArray %}
<td>
{{num}}
</td>
{% if loop.index is even %}
</tr>
<tr>
{% endif %}
{% endfor %}
{% if num|length is odd %}
<td></td>
{% endif %}
</tr>
</table>
另一种方式,感觉就没那么麻烦了:
<table>
{% for i in range(0, numArray|length-1, 2) %}
<tr>
<td>{{ numArray[i] }}</td>
<td>{{ numArray[i+1]|default("") }}</td>
</tr>
{% endfor %}
</table>
发布于 2012-02-25 15:38:59
对于这种特定情况,您可以在此之前准备您的数组。所以在循环中,每一行都有两个变量。尝试此站点http://twig.sensiolabs.org/doc/templates.html中的第一个示例
https://stackoverflow.com/questions/9441859
复制相似问题