Smarty – tablice nieasocjacyjne

Data dodania:
13 września 09
Autor:
Robert Węglarek
Kategoria:
Inne

W kolejnych dwóch częściach mini kursu o SMARTY postaram się przybliżyć sposób działania na tablicach (nieasocjacyjnych oraz asocjacyjnych). Przykłady nie będą obejmowały wywołania bibliotek smarty. Jak tego dokonać opisałem w pierwszej części mini kursu.
Ta część będzie poświęcona tablicom nieasocjacyjnym.

Na początek coś łatwego czyli najprostsza tablica, przekazanie jej do szablonu o nazwie przyklad.tpl oraz jego wyświetlenie.

$tablica = array('element 1', 'element 2', 'element 3', 'element 4');
$smarty->assign('tablica', $tablica);
$smarty->display('przyklad.tpl');

W szablonie (przyklad.tpl) możemy zarówno odwołać się do konkretnego elementu tablicy oraz wyświetlić je w pętli.

Odwołanie się do konkretnego elementu możemy uzyskać dzięki wskazaniu jego indeksu.

{$tablica[0]}, {$tablica[1]}, {$tablica[2]}, {$tablica[3]}

Efektem tego będzie wyświetlenie na stronie tekstu:

element 1, element 2, element 3, element 4

W celu dokonania przejścia przez wszystkie elementy tablicy można skorzystać z funkcji section. Każdy znacznik musi być zamknięty. Przyjmuje kilka parametrów, z których 2 są obowiązkowe - name oraz loop.

  • name – nazwa sekcji. Może być dowolna. Dozwolone znaki to litery, cyfry oraz znak podkreślenia. Można oczywiście wstawiać sekcje w sekcjach (zagnieżdżać). W takim przypadku każda sekcja musi mieć inną nazwę.
  • loop – zazwyczaj podajemy w niej tablicę, po której będziemy iterować. Określa ile razy pętla się wykona. Nic nie stoi na przeszkodzie, żeby jako jej wartość podać liczbę całkowitą.
  • start - indeks, od którego rozpocznie się iteracja. Jeżeli podamy wartość ujemną, pozycja startowa będzie liczona od końca.
  • step – wartość określająca “krok” iteracji czyli co który element tablicy będzie wykonany. Wartość ujemna wykona to samo, tyle że od tyłu.
  • max – wartość maksymalna wykonania pętli.
  • show – parametr decyduje czy wyświetlić sekcję. Domyślnie ustawiony na true.

Sekcje mają swoje zmienne do określania własności. Aby się do nich “dostać” używamy składni:

{$smarty.section.nazwa_sekcji.wlasnosc}

Lista własności: index, index_prev, index_next, iteration, first, last, rownum, loop, show, total.
Zbierając wszystko do kupy przykładowy kod będzie wyglądał tak:

{section name=nazwa_petli loop=$tablica}
indeks: {$smarty.section.nazwa_petli.index}, wartość: {$tablica[nazwa_petli]}<br />
{/section}

Co w wyniku pokaże:

indeks: 0, wartość: element 1
indeks: 1, wartość: element 2
indeks: 2, wartość: element 3
indeks: 3, wartość: element 4

Możliwe jest również użycie tagu

{sectionelse}

Dzięki niemu można zmienić działanie pętli w wypadku, gdy aktualna jej wartość jest pusta.
Szybki przykład:

{section name=nazwa_petli loop=$tablica}
wartość: {$tablica[nazwa_petli]}<br />
{sectionelse}
Brak wartości
{/section}

Mam nadzieję, że powyższy artykuł pomoże Wam lepiej zrozumieć pętle w SMARTY.
W kolejnej części opiszę sposób operowania na tablicach asocjacyjnych.

http://smarty.net/manual/en/language.function.section.php#section.property.total

~Robert Węglarek