我正在编写一个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时刻的限制......
任何帮助表示欢迎,欢呼
答案 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