Szablony smarty odc.3. Instrukcja warunkowa

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

<table>
	<tr id="naglowek">
	<td>Lp</td>
	<td>Ksi±żka</td>
	<!--warunek na dodatkowe kolumny-->
	{if $liczba_pol == 7}
	<td>Od dnia</td>
	<td>Do dnia</td>
	{elseif $liczba_pol == 6}
	 <td>Data publikacji</td>   
	{else}
	 <!--żadnych dat-->   
	{/if}				
	<td>Moduł</td>
	<td>Netto</td>
	<td>Branża</td>
	</tr>	
</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:

{if $liczba_pol == 7}
 wypisz ten tekst
{/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:

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

Leave a Reply

%d bloggers like this: