Web fejlesztés - Smarty Template

További lehetőségek, gyakorlati példák

Html táblázat egyszerűen:

A következő tömböket adjuk át a smartynak, amiket majd a sablon felhasznál:

$data=array(1,2,3,4,5,6,7,8,9)
$tr=array('bgcolor="#eeeeee"','bgcolor="#dddddd");

Alapértelmezett táblázat:

{html_table loop=$data}

eredménye:

<table border="1">
<tbody>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
<tr><td>7</td><td>8</td><td>9</td></tr>
</tbody>
</table>

Az alapértelmezett táblázatban nincs címsor és a tömb adatait 3 oszlopos formába lebontva jeleníti meg. Ha nem megfelelő az oszlopszám a cols attribútummal változtathatjuk meg. Ha további attribútumokat akarunk átadni a <table> tagnek akkor azt a table_attr attribútummal tehetjük meg. Egy keret nélküli 4 oszlopos táblázatot a következő képpen írhatunk ki:

{html_table loop=$data cols=4 table_attr='border="0"'}

eredménye:

<table border="0">
<tbody>
<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>
<tr><td>5</td><td>6</td><td>7</td><td>8</td></tr>
<tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
</tbody>
</table>

Ha szeretnénk címsor megadni akkor a cols attribútumban egy vesszővel elválasztott listában adhatjuk meg a címsor elemeit. Ha a táblázat sorainak akarunk megadni akkor a tr_attr attribútumnak kell értéket adnunk. Ha ez egy tömb, mint ebben a példában, akkor a táblázat kiíratásánál végig iterálunk ezen a tömbön. A példában tehát minden 2. sor ugyanolyan színű lesz:

{html_table loop=$data cols="first,second,third,fourth" tr_attr=$tr}

eredménye:

<table border="1">
<thead>
<tr>
<th>first</th><th>second</th><th>third</th><th>fourth</th>
</tr>
</thead>
<tbody>
<tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr>
<tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr>
<tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
</tbody>
</table>

Dátum és időpont választó menü:

A smartyban lehetőségünk van egy-egy paranccsal dátum és időpont választó legördülő menüket készíteni.

{html_select_date}

eredménye:

<select name="Date_Month">
<option value="1">January</option>
...
<option value="5" selected="selected">May</option>
...
<option value="12">December</option>
</select>
<select name="Date_Day">
<option value="1">01</option>
...
<option value="28" selected="selected">28</option>
...
<option value="31">31</option>
</select>
<select name="Date_Year">
<option value="2009" selected="selected">2009</option>
</select>

Alapértelmezés szerint mindig az aktuális dátumra áll a menü, de ezt természetesen módosíthatjuk további attribútumok megadásával. Attribútumokkal megadható a menü formátuma (azaz a legördülő menük sorrendje), a hónapokat magyarosíthatjuk, kezdő és záró évet adhatunk meg. A {html_select_time} paranccsal és annak attribútumaival hasonlóképpen jeleníthetjük meg az idő választót.

Gyakran használt html elem még a választó lista. Ezt a {html_options} paranccsal készíthetjük el. Paraméterként meg kell adni neki a szövegeket tartalmazó tömböt, amik meg fognak jelenni a listában. Ilyenkor az értékeket 0-tól kezdve sorszámozza. Paraméterben azonban megadható az értékeket tartalmazó tömb is. Ezt már nem részletezném, további infót a manual-ban találsz róla.

{ }:

Végül egy apró, de annál hasznosabb parancs, illetve parancsok a {ldelim} és {rdelim}. Mivel a smartyban foglalt a { és } karakter ezért gondban lennénk a javascript függvények és a stílusok írásánál. Ezt a két karaktert tehát a fenti két paranccsal írathatjuk ki:

function teszt() {ldelim}
alert('teszt');
{rdelim}

eredménye:

function teszt() {
alert('teszt');
}

+1 ráadás tipp:

Nincs annál idegesítőbb, amikor kitöltesz egy 15-20 mezőből álló formot, de a feldolgozó hibát talál benne, és amit bele írtál kitörli (pontosabban nem írja vissza). Erre tökéletes megoldás a smarty lefoglalt változói, melyek többnyire a PHP super global változóival egyenlőek.

{$smarty.get.page} ugyanaz, mint $_GET['page']
{$smarty.post.page} ugyanaz, mint $_POST['page']
{$smarty.server.SERVER_NAME} ugyanaz, mint $_SERVER['SERVER_NAME']

Ha egy formot építünk fel akkor a mezők értékének mindig adjuk meg a postos változó értékeket, ezáltal, ha hibát talál a feldolgozó visszaíródik az adat:

<form ...>
<input type="text" name="nev" value="{$smarty.post.nev}" />
...
</form>

Biztonsági okokból a smarty új verziója már csak olvasni tudja ezeket a változókat.

Egy kis megjegyzés:

Ha a sablonba akarunk megjegyzést írni megtehetjük azt html megjegyzéssel és smarty megjegyzéssel is. A kettő között a formátumon kívül még az a különbség, hogy a html megjegyzés bekerül a kimenetbe, a smarty meg nem:

<!-- html megjegyzes -->
szöveg
{* smarty megjegyzés *}

eredmény:

<!-- html megjegyzes -->
szöveg

A cikk még nem ért véget, kérlek, lapozz!