0

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

这个代码示例的奇怪之处在于输出,除了 0 应该与序列 1,2,3.. 输出在同一行之外,一切看起来都很好

var_dump'ing Sector 对象表明它有一个“下一个”链接,因此不应呈现关闭的 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 'and sector.Id > 0' 也会发生这种情况,认为这可能是树枝的限制或 RTM 时刻......

任何帮助表示赞赏,干杯

4

1 回答 1

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
于 2013-05-08T21:23:21.747 回答