Manual

2.3. tal:repeat

Atrybut ten obsługuje obiekty iteracyjne takie jak tablice, tablice asocjacyjne i obiekty implementujące klasę PHP5 Iterable.

Atrybut ten iteruje po elementach i ich zawartości aż do końca zdefiniowanego źródła.

<tr tal:repeat="item some/result">
  <td tal:content="item">text replaced by item</td>
</tr>

Wewnątrz pętli masz dostęp do informacji o aktualnym elemencie (oraz jego rodzica w przypadku pętli zagniedżonej) poprzerz specjalne ścieżki repeat/*.

W powyższym przykładzie :

  • repeat/item/index : zwraca indeks elementu (od 0 do ilośc_elementów-1)
  • repeat/item/number : zwraca numer elementu (od 1 do ilośc_elementów)
  • repeat/item/even : zwraca TRUE, jeśli indeks elementu jest parzysty
  • repeat/item/odd : zwraca TRUE, jeśli indeks elementu jest nieparzysty
  • repeat/item/start : zwraca TRUE, jeśli element jest pierwszy
  • repeat/item/end : zwraca TRUE, jeśli element jest ostatni
  • repeat/item/length : zwraca ilość elementów
  • repeat/item/key : zwraca klucz elementu jeśli element jest asocjacyjny (w przeciwnym przypadku zwróci indeks elementu)

Nazwa elementu item jest zdefiniowana w wyrażeniu tal:repeat.

Najczęściej z tal:repeat korzysta się przy przetwarzaniu wyników zapytań SQL z bazy danych :

<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>