Smarty Template Engine 27.díl - Funkce XI.
Uživatelské funkce
{html_table}
Další z na parametry bohatých funkcí je „html_table“, z mého pohledu jde však o ne tak podstatnou kapitolu. Funkce nám automaticky přiřadí data předané z aplikační logiky do jednotlivých buněk tabulky. Pokud bychom ale rádi vypsali asociatiní pole, musíme využívat řídící funkce „foreach“, či „section“. „html_table“ totiž umí pracovat jen a pouze s lineárními poli, kdy každý další záznam z proměnné vypisuje do následující buňky, dle nastavení parametrů. S takovýmto jednoduchým vypisováním se zas tak často nesetkáváme, proto je z mého pohledu u této funkce mírné zklamání z její funkčnosti.- loop – název proměnné z aplikační logiky, jež nám přiřazuje data k výpisu ,defaultně: (povinný)
- cols – jde o napevno zadaný počet sloupců tabulky, defaultně: 3 (nepovinný)
- rows – jde o napevno zadaný počet řádků tabulky, defaultně: 3 (nepovinný)
- inner - určuje, zda si nepřejete procházet proměnnou dovnitř, tedy brát jako směrodatný počet iterací „rows - sloupce“,defaultně: cols(nepovinný)
- caption – nastavuje element caption tabulky ,defaultně: mpty(nepovinný)
- table_attr - nastavuje základní parametry HTML tagu „table“, jako border aj. ,defaultně: empty (nepovinný)
- th_attr – atributy iterovaných tagů „th“ ,defaultně: empty (nepovinný)
- tr_attr – atributy iterovaných tagů „tr“ ,defaultně: empty (nepovinný)
- td_attr – atributy iterovaných tagů „td“ ,defaultně: empty (nepovinný)
- trailpad – nastavuje obsah prázdných buněk na konci tabulky,defaultně: empty (nepovinný)
- hdir - směr, kterým budou vytvářeny jednotlivé řádky, „right“ pro výchozí směr z leva do prava a „left“ pro směr opačný,defaultně: right (nepovinný)
- vdir – smětr, kterým budou vytvářeny jednotlivé sloupce, „down“ pro od shora dolů a pro směr opačný „up“ ,defaultně: (nepovinný)
index.php
<?php
require_once("./hlavicka.php");
$user = array('1','5','7','8','2','12','1456','98','5','7');
$smarty->assign('user', $user);
$smarty->display('index.tpl');
?>
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{html_table loop=$user caption='tabulka' cols=5 rows=3 trailpad='X' }
</p>
{include file='./paticka.tpl'}
- Parametrem loop tedy nastavujeme proměnnou, jež si přejeme procházet.
- Caption tabulk udává totožný parametr v HTML.
- Cols nastaví pevně počet buněk v jedno řádku na 5
stejně tak rows pevně počet řádků na 3.
- Parametr trailpad vkládá do buněk bez dat nakonci tabulky znak X.
{math}
Knihovna „math“ umožňuje provádět matematické operace přímo uvnitř té konkrétní tabulky. Možné prostředky funkce vycházejí z PHP knihovny math. V případě použítí parametru assign bude výsledek přiřazen do proměnné v šabloně.Každopádně je výhodnější používat pro výpočty spíše PHP, hlavně pro jistotu správného ošetření vstupních proměnných a zaručení toho, že budeme počítat to, co doopravdy potřebujeme. I tak se občas výpočtům přímo v šabloně nevyhneme, ale pro lidi znalé PHP by to neměl být problém.
- equation – zadání k provedení výpočtu, defaultně: (povinný)
- format – výstup na bázi funkce sprintf ,defaultně: (nepovinný)
- var - uživatelem definovaná nová proměnná,defaultně: (nepovinný)
- [var..] - v případě, že je potřeba proměnných víc, mohou se ukládat do pole ,defaultně: (nepovinný)
- assign – přiřazení výsledku výpočtu samostané proměnné v šabloně ,defaultně: (nepovinný)
index.php
<?php
require_once("./hlavicka.php");
$smarty->assign('row_height', '200');
$smarty->assign('row_width', '75');
$smarty->assign('division', '4');
$smarty->display('index.tpl');
?>
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{math equation="height * width / base" base=$division height=$row_height width=$row_width }
</p>
{include file='./paticka.tpl'}
Do námi definovaných proměnných "base", "height" a "width" uložíme hodnoty předané z aplikační logiky a na obrazovku se následně vypíše výsledek.