[PHP][Smarty] Jak zmieniać cyklicznie tło wiersza ?

Programowanie
[PHP][Smarty] Jak zmieniać cyklicznie tło wiersza ?

W jaki sposób mogę cyklicznie zmieniać tło wiersza tabeli na jeden z listy kolorów zdefiniowanych prze zemnie.

Smarty ma w sobie wbudowanych wiele przydatnych funkcji, które możemy wykorzystywać przy pisaniu naszych szablonów. Właśnie taką funkcją jest cycle, która cyklicznie przetwarza zbiór wartości i zwraca jedną po drugiej.
Załóżmy że mamy tablicę z danymi:

$users[0]["imie"] = "Jacek";
$users[0]["nazwisko"] = "Jacek";
$users[0]["wiek"] = "32";
$users[0]["email"] = "jacek@kowalski.pl";
$users[1]["imie"] = "Anna";
$users[1]["nazwisko"] = "Tomaszko";
$users[1]["wiek"] = "26";
$users[1]["email"] = "anna@tomaszko.pl";
$users[2]["imie"] = "Jacek";
$users[2]["nazwisko"] = "Wolski";
$users[2]["wiek"] = "29";
$users[2]["email"] = "jacek@wolski.pl";

Nasz skrypt będzie wyglądał w następujący sposób:

require_once'libs/smarty/Smarty.class.php';

$smarty = new  Smarty();

$users[0]["imie"] = "Jacek";
$users[0]["nazwisko"] = "Jacek";
$users[0]["wiek"] = "32";
$users[0]["email"] = "jacek@kowalski.pl";
$users[1]["imie"] = "Anna";
$users[1]["nazwisko"] = "Tomaszko";
$users[1]["wiek"] = "26";
$users[1]["email"] = "anna@tomaszko.pl";
$users[2]["imie"] = "Jacek";
$users[2]["nazwisko"] = "Wolski";
$users[2]["wiek"] = "29";
$users[2]["email"] = "jacek@wolski.pl";

$smarty -> assign('users', $users);
$smarty -> display('index.tpl');

Następnie tworzymy sobie plik szablonu który będzie wyglądał w następujący sposób:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
</head>
<body>
<table cellpadding="0" border="0" cellspacing="0" width="500">
<tr bgcolor="#808080">
    <th>Imię</th>
    <th>Nazwisko</th>
    <th>Wiek</th>
    <th>E-mail</th>
</tr>
{section name=index loop=$users}
<tr bgcolor="{cycle values="#EBEBEB, #D0D0D0"}">                   
    <td>{$users[index].imie}</td>
    <td>{$users[index].nazwisko}</td>
    <td align="center">{$users[index].wiek}</td>
    <td align="center">{$users[index].email}</td>
</tr>
{/section}
</table>
</body>
</html>

Jak widzimy została tutaj wstawiona funkcja cycle w atrybucie TR odpowiedzialnym za ustawianie tła wiersza, ustawia ona poszczególne elementy znajdujące się na jej liście co przebieg pętli section.