Smarty Template Engine 21.díl - Funkce VI.

Napsal (») 1. 7. 2009 v kategorii PHP/HTML, přečteno: 1202×
obrazky/smarty.gif

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'}
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel třináct a jedna