tal:repeat
This 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>