Szablony smarty odc.4. Iteracja, czyli o zastosowaniu pętli

Pokazałam już jak zainstalować smarty, jak skonstruować pierwszy, prymitywny szablon, oraz jak wykorzystać w szablonie instrukcję warunkową. Teraz nadeszła pora na pętlę. Dlaczego pętle są ważne? Dlatego, że czasem chcemy umieścić na stronie tabelkę (w normalny rozumieniu tego słowa), listy numerowane lub nie, czy wreszcie inne bloki danych o ustalonym formacie, ale nieznanej ilości. Baaa, gdyby ilość była zafiksowana to nie byłoby problemu. W tym jednak urok PHP, że wykorzystujemy go do dynamicznego tworzenia stron, więc na ogół musimy korzystać z pętli.

Oczywiście moglibyśmy za pomocą pętli w php skonstruować to czego potrzebujemy, jednym zgrabnym ruchem ‘wstrzyknąć’ to w odpowiednie miejsce szablonu i po kłopocie. O fuj. Na samą myśl o tym się skrzywiłam. Przecież chcemy odseparować php od html, więc nie tędy droga. Pętle w szablonie będą nam więc niezbędne.

Aby wydzielić blok, który ma być następnie wielokrotnie powtórzony trzeba się będzie posłużyć znacznikami {section} (otwierający) i {/section} (zamykający) Wewnątrz których definiujemy treść bloku, który ma się powtarzać. W znacznik otwierający musimy jeszcze zdefiniować kilka parametrów. Najpierw jednak przykład:

<ul>
{section name=petla loop=$lista}
   <li>{$lista[petla]}</li>
{/section}
</ul>

Jak widać postanowiłam stworzyć dynamiczną listę nienumerowaną. Wewnątrz znaczników {section} znalazł się blok będący kolejną pozycją tej listy. W znaczniku otwierającym {section} zostały zdefiniowane dwa atrybuty. Pierwszy z nich to atrybut name, który określa nam nazwę zmiennej sterującej naszej sekcji i pozwala w razie potrzeby odwoływać się do jej parametrów (spokojnie jeszcze o tym napiszę). Drugi to atrybut loop, którego wartością jest nazwa zmiennej wyznaczającej liczbę obrotów pętli. Co zatem dzieje się w naszym przykładzie? Załóżmy, ze ze skryptu php do naszego szablonu przekażemy tablicę:

<?php
$tablica = array('alfa','beta','gamma','delta');
$szablon->assign('lista',$tablica);
?>

Na uwagę zasługuje fakt, że jest to zwykła tablica stringów nie zawierająca żadnych znaczników HTML a przecież właśnie o to nam chodziło. Po uruchomieniu szablony sekcja wykona 4 pętla (taki rozmiar ma nasza tablica) i wewnątrz znaczników li wyświetli nam kolejne pozycje tablicy odwołując się do nich przez zmienną petla, która w kolejnej iteracji zwiększa wartość (w tym przypadku o jeden, ale można to zmienić). No i w zasadzie prosta pętla już za nami. Prawda, ze nic trudnego? O dodatkowych atrybutach sekcji oraz bardziej wyszukanych jej możliwościach napisze już wkrótce.

Leave a Reply

%d bloggers like this: