tal:repeat
Этот атрибут служит для циклов над перечисляемыми данными: массивами, ассоциативными массивами и перечисляемыми объектами в PHP5
Атрибут repeat поочередно пробегает по всем значениеям указанного ресурса (например, массива).
<tr tal:repeat="item some/result">
<td tal:content="item">текст, который заменится значением из item</td>
</tr>
Внутри цикла можно использовать специальные ключевые слова repeat/
, чтобы получить доступ к информации об состоянии цикле (и всех внешних циклов).*
Вот список допустимых ключевых слов:
repeat/item/key
: возвращает ключ элемента item в ассоциативном массиве some/result (если ассоциативности нету, то просто возвращает индекс этого элемента)
repeat/item/index
: возвращает индекс элемента item (от 0 до count-1)
repeat/item/number
: возвращает порядковый номер элемента item (от 1 до count)
repeat/item/even
: возвращает true, если индекс четный
repeat/item/odd
: возвращает true, если индекс нечетный
repeat/item/start
: возвращает true, если элемент является первым
repeat/item/end
: возвращает true, если элемент является последним
repeat/item/length
: возвращает количество элементов в some/result
в этих примерах, вместо названия "item" нужно использовать то же название, что и в выражении tal:repeat
(tal:repeat="item some/result").
Одно из самых распространненных применений атрибута tal:repeat
- отображение разультатов запроса к базе данных. Следующий пример сработает только в том случае, если playersRanking
является объектом, реализующим интерфейс PHP Iterator
:
<table>
<thead>
<tr>
<th>Позиция</th>
<th>Игрок</th>
<th>Очки</th>
</tr>
</thead>
<tbody>
<tr tal:repeat="ranking playersRanking">
<td tal:content="ranking/position"/>
<td tal:content="ranking/player"/>
<td tal:content="ranking/score"/>
</tr>
</tbody>
</table>