Smarty Template Engine 21.díl - Funkce VI.
V dnešním díle budeme pokračovat v popisu uživatelských funkcí, dostupných ve Smarty Template Engine.
cycle
Velmi užitečnou a hojně využívanou funkcí je „cycle“. Její použití vychází již z jejího názvu, tedy „cyklovat“. Její použítí je nejvhodnější uvnitř vypisování dat do tabulek, a jiných prvků dokumentu, u které chceme jednoduchým způsobem nadefinovat, co a jakým způsobem se má během cyklování měnit. Typicky to může být např. Pozadí buňky tabulky, textu apod. Proto je možné využít funkci pouze uvnitř těla příkazů „foreach“, či „section“.- name – jméno cycle, unikátní v rámci šablony, defaultně: default (nepovinný)
- values – hodnoty určené k cyklování. Jednotlivé násobky iterace jsou odděleny čárkou, (povinný)
- print – zda vypsat první volání cycle, defaultně: true(nepovinný)
- advance – zda přejít na následující hodnotu, určenou ve values , defaultně: true (nepovinný)
- delimiter – oddělovač, který v parametru values určuje oddělení jednotlivých hodnot k vypsání, defaultně: „,“ (nepovinný)
- assign – šablona, pro kterou povolit vypisování cycle, defaultně: ...(nepovinný)
- reset – přepnutí cycle do prvního stavu (prvním stavem je myšlena první hodnota v parametru values). Reset se vyvolá nastavením hodnoty na true, defaultně: false (nepovinný)
Pro příklad použijeme obměněný index.php z minulého dílu. Budeme tedy vypisovat data v cyklu a nastavovat pozadí pomocí této funkce
index.php
<?php
require_once("./hlavicka.php");
$user[0] = array('id' => '0','name' => 'Tom Jedna', 'ui' => '1');
$user[1] = array('id' => '2','name' => 'Martin Dva', 'ui' => '2');
$user[2] = array('id' => '3','name' => 'Jindra Tri', 'ui' => '3');
$user[3] = array('id' => '4','name' => 'Honza Osm', 'ui' => '3');
$user[4] = array('id' => '5','name' => 'Pavel Sestset', 'ui' => '3');
$user[5] = array('id' => '6','name' => 'Tadeas Dvanact', 'ui' => '2');
$user[6] = array('id' => '1','name' => 'Tadeas Dvanact', 'ui' => '2');
$smarty->assign('user', $user);
$smarty->display('index.tpl');
?>
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
<table>
<tr>
<td>ID</td>
<td>jmeno</td>
</tr>
{foreach from=$user item=vystup}
<tr style="background-color:#{cycle delimiter='x' name=vypis values='dddxeeexfffeee'};">
<td>{$vystup.id}</td>
<td style="font-weight:{cycle name=vypis2 values='bold,normal'};">{$vystup.name}</td>
</tr>
{/foreach}
<tr><td colspan="2" style="font-weight:{cycle name=vypis2 values='bold,normal' reset=true};">A konec tucne za jakykoliv podminek</td>
</tr>
</table>
</p>
{include file='./paticka.tpl'}
Čeho by jste si na následujícím příkladě měli povšimnout? V cyklu používám funkci „cycle“ rovnou dvakrát.
První s názvem: :“vypis“ nastavuje barvu pozadí celého řádku. Jako delimiter jsem si zvolil hodnotu „x“, ta u hexadecimálně zadávaných barev nikdy nastat nemůže. Jako hodnoty k obměně pak nabízím hned 3 možnosti, a to barvy: „ddd“, „eee“, a „fffeee“.
Druhý cycle s name“ „vypis2“ nastavuje každému lichému výpisu jména tučně vypsaný text.
Pod cyklem foreach používáme cycle ještě jednou, i když už samozřejmě zbytečné, protože mimo cyklus nemá tato funkce možnost překlopit se do druhého stavu. Ale pro demonstraci parametru „reset“ jde o vyhovující příklad. Pokud bychom reset nazadali (tedy nastavili na „false“), následoval by logicky stav „normal“. Resetem jsme však přepli do výchozího stavu, tedy „bold“.
debug
Jde o nepárovou funkci, sloužící k otevření „debug“ okna k odladění aplikace. Zobrazí Vám přehledně všechny proměnné, jež byly do šablony přiřazeny příkazem „assign“, aktuální šablonu.Parametr :output může nabývat hodnot „javascript“, nebo „html“. V prvním případě se Vám okno otevře novém okně. V případě volby html se vytvoří stejná tabulka přímo v aktuálním okně.
Jako příklad si nechte index.php v nastavení, používaným u cycle, pouze modifikujte tako:
index.tpl
¨
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{debug output=html}
</p>
{include file='./paticka.tpl'}