Szablony smarty odc.3. Instrukcja warunkowa

Szablony Smarty Zostaw komentarz

Nadarzyła się okazja do nauki szablonów smarty na konkretnym przypadku. Przyszło mi zmienić wygląd i zawartość jednego z okienek pop-up aplikacji, którą się opiekuję. Idealna sytuacja do wprowadzenie w życie świeżo nabytych umiejętności. Okienko niewielkie, zawartość nieskomplikowana, więc szablon nie będzie zbyt rozbudowany. Jednakże poza podstawami o których była mowa w poprzednich odcinkach potrzebna będzie jeszcze znajomość instrukcji warunkowej. Dlaczego? No bo w zależności od tego jakie dane przygotuję ich prezentacja będzie się nieco zmieniać.

Po pierwsze to dane tabelaryczne, więc będzie jeszcze potrzebna umiejętność obsługi pętli, ale o tym będzie w następnym odcinku. Po drugie tabela może mieś różną liczbę kolumn (5,6 lub 7). Chciałoby się do szablony wstawić na stałe nagłówki, żeby ich nie przekazywać, w końcu mamy za zadanie odseparować php od HTML. Nie można więc stringu zawierającego wiersz nagłówka konstruować w php i przekazywać do szablonu jako parametr. Oczywiście z punktu widzenia możliwości technicznych daje się to zrobić, ale przeczy to zasadzie w myśl której postanowiłam nauczyć się szablonów, czyli powoduje, że php ciągle jest pomieszane z htm a związku z tym jest nieeleganckie.

Dość tych filozofii, przechodzimy do praktyki.
W szablonie tp1.tpl mamy taką oto tabelkę znajdującą się w sekcji BODY (dla przejrzystości nie pokazuję całego kodu):

  1. <table>
  2.   <tr id="naglowek">
  3.   <td>Lp</td>
  4.   <td>Ksi±żka</td>
  5.   <!--warunek na dodatkowe kolumny-->
  6.   {if $liczba_pol == 7}
  7.   <td>Od dnia</td>
  8.   <td>Do dnia</td>
  9.   {elseif $liczba_pol == 6}
  10.    <td>Data publikacji</td>   
  11.   {else}
  12.    <!--żadnych dat-->   
  13.   {/if}    
  14.   <td>Moduł</td>
  15.   <td>Netto</td>
  16.   <td>Branża</td>
  17.   </tr> 
  18. </table>

Jak widać powyższa tabelka składa się na razie tylko z jednego wiersza, wiersza nagłówków. Pięć komórek to część stała tej tabelki (jak już pisałam 5 to minimalna ilość kolumn). Między nimi znajduje się instrukcja warunkowa przyjmująca jako parametr znacznik $liczba_pol. W zależności od jego wartości dostawia jedną lub dwie kolumny, albo nie dostawia żadnej. I to cała tajemnica instrukcji warunkowych. Oczywiście instrukcję warunkową można stosować w najprostszym jej wariancie:

  1. {if $liczba_pol == 7}
  2.  wypisz ten tekst
  3. {/if}

jak również z dowolnie dużą ilością klauzuli {elseif warunek} z tym jednak zastrzeżeniem, że klauzule te muszą znajdować się wewnątrz bloku ograniczonego znacznikami {if} oraz {/if}. Oczywiście tak jak to jest w pozostałych językach klauzula wartości domyślnej {else} może się w danej sekcji pojawić tylko raz i także musi znaleźć się wewnątrz bloku instrukcji warunkowej. W szablonie smarty operatory porównania muszą być otoczone spacjami i w przeciwieństwie do języka php nie wolno używać operatorów identyczności === i nieidentyczności !==.

To tyle po stronie szablonu. Teraz ten szablon trzeba obsłużyć.
Nic prostszego. Trzeba tylko wywołać metodę assign tak jak to pokazywałam w poprzednich odcinkach:

  1. $szablon->assign('liczba_pol',count($tablica[0]));

gdzie $tablica[0] to pierwszy wiersz wielowymiarowej tablicy, która będzie wstawiona do szablonu poniżej wiersza nagłówka. Ale o tym będzie już w następnym odcinku.

Poleć wpis na:

  • Facebook
  • Technorati
  • Wykop

Podobne artykuły:

  1. Szablony smarty odc.5. Jak zrobić kartkę z kalendarza, czyli bardziej skomplikowane własności sekcji
  2. Szablony smarty odc.4. Iteracja, czyli o zastosowaniu pętli
  3. Szablony smarty odc.2. Pierwszy szablon
  4. Szablony smarty odc.1. Instalacja

Zostaw komentarz

Silnik: Wordpress - Theme autorstwa N.Design Studio. Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj się