首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你将如何用Twig制作一个两列表格?

你将如何用Twig制作一个两列表格?
EN

Stack Overflow用户
提问于 2012-02-25 14:27:47
回答 2查看 11.6K关注 0票数 20

我无论如何也想不出如何在Twig循环中每隔一次迭代添加一个</tr><tr>

例如:

代码语言:javascript
复制
$numArray = array(12,13,14,15,16,17,18);

传递给twig,我会循环一个表,如下所示:

代码语言:javascript
复制
<table>
  {% for num in numArray %}
    <tr>
      <td>
        {{num}}
      </td>
    </tr>
  {% endfor %}
</table>

这将输出:

代码语言:javascript
复制
+-----------+
|    12     |
+-----------+
|    13     |
+-----------+
|    14     |
+-----------+
|    15     |
+-----------+
|    16     |
+-----------+
|    17     |
+-----------+
|    18     |
+-----------+

我想做的是得到这样的东西:

代码语言:javascript
复制
+-----------+-----------+
|    12     |    13     |
+-----------+-----------+
|    14     |    15     |
+-----------+-----------+
|    16     |    17     |
+-----------+-----------+
|    18     |           |
+-----------+-----------+

但我无论如何也想不出一种方法,可以将我的行输入替换为任何看起来不太老套的东西。老实说,我甚至不能让hacky去工作。有什么方法可以解决这个问题吗?或者,我应该编写自己的扩展吗?

EN

回答 2

Stack Overflow用户

发布于 2012-02-25 17:03:40

像这样的东西会起作用的:

代码语言:javascript
复制
<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>

另一种方式,感觉就没那么麻烦了:

代码语言:javascript
复制
<table>
  {% for i in range(0, numArray|length-1, 2) %}
  <tr>
    <td>{{ numArray[i] }}</td>
    <td>{{ numArray[i+1]|default("") }}</td>
  </tr>
  {% endfor %}
</table>
票数 5
EN

Stack Overflow用户

发布于 2012-02-25 15:38:59

对于这种特定情况,您可以在此之前准备您的数组。所以在循环中,每一行都有两个变量。尝试此站点http://twig.sensiolabs.org/doc/templates.html中的第一个示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9441859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档