Twig - foreach循环内的多个条件

时间:2013-05-07 20:03:37

标签: php twig silex

我正在编写一个twig模板,以在简单的HTML表格中显示包含“扇区”对象的网格。如果对象没有左边的链接,我想开始一个新行,如果它没有下一个链接,我想要结束该行。

关于这个代码示例的奇怪之处在于输出,所有看起来都很好,除了0应该在与序列1,2,3相同的行上输出。

var_dump'ing Sector对象显示它有一个'next'链接,因此不应该渲染结束tr。在此对象上调用hasNext函数将返回true,并在模板中输出hasNext函数显示为true。


0
1   2   3   4   5   6   7   8   9
10  11  12  13  14  15  16  17  18  19
20  21  22  23  24  25  26  27  28  29
30  31  32  33  34  35  36  37  38  39
40  41  42  43  44  45  46  47  48  49
50  51  52  53  54  55  56  57  58  59
60  61  62  63  64  65  66  67  68  69
70  71  72  73  74  75  76  77  78  79
80  81  82  83  84  85  86  87  88  89
90  91  92  93  94  95  96  97  98  99

这是模板:

<table>
    {% for sector in sectors %}

        {% if sector.hasPrev() == false %}
            <tr>
        {% endif %}

        <td>{{ sector.Id }}</td>

        {% if sector.hasNext() == false %}
            </tr>
        {% endif %}

    {% endfor %}
</table>

hasNext和hasPrev函数定义为:

public function hasNext(){
    return in_array($this->_id + 1, $this->_links);
}

public function hasPrev(){
    return in_array($this->_id - 1, $this->_links);
}

和扇区对象(0)var_dumped是:

array (size=100)
  0 => 
    object(App\Model\Sector)[62]
      private '_id' => int 0
      private '_links' => 
        array (size=3)
          0 => int 1
          1 => int 10
          2 => int 11
      private '_universe' => null

即使我添加了kludge'和sector.Id&gt;也会发生这种情况。 0',认为这可能是对树枝或RTM时刻的限制......

任何帮助表示欢迎,欢呼

1 个答案:

答案 0 :(得分:0)

感谢Ninsuo的评论,我设法解决了这个问题。

我正在查看chrome开发人员工具中的标记,该工具在单元格0之后显示关闭TR,导致我相信第二个条件被触发...

实际上,开发人员工具看起来像是在元素检查器中修复了格式错误的html。直接查看源表明没有添加关闭TR(预期输出),实际上它是单元格1的开始tr触发了新行,因为没有到单元格0的反向链接。

1 => 
  object(App\Model\Sector)[66]
    private '_id' => int 1
    private '_links' => 
      array (size=5)
        0 => int 1
        1 => int 2
        2 => int 10
        3 => int 11
        4 => int 12