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>