tal:repeatThis attribute handles iterable objects like arrays, associative arrays, and objects implementing the PHP5 Iterator class.
The repeat attribute repeats its element and its content until the end of the specified resource.
<tr tal:repeat="item some/result">
<td tal:content="item">text replaced by item</td>
</tr>
Within a loop, you can access the current loop information (and that of its parent for nested loops) using specific repeat/ paths.*
In the above example:
repeat/item/key : returns the item's key if some/result is an associative resource (index otherwise)
repeat/item/index : returns the item index (0 to count-1)
repeat/item/number : returns the item number (1 to count)
repeat/item/even : returns true if item index is even
repeat/item/odd : returns true if item index is odd
repeat/item/start : returns true if item is the first one
repeat/item/end : returns true if item is the last one
repeat/item/length : returns the number of elements in some/result
"item" depends on the receiver variable defined in tal:repeat expression.
The most common usage of tal:repeat is in using some SQL database result. The following code will work if playersRanking contains object that implements PHP's Iterator interface:
<table>
<thead>
<tr>
<th>Position</th>
<th>Player</th>
<th>Score</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>