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> </td><td> </td><td> </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> </td><td> </td><td> </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!