Smarty Template Engine 24.díl - Funkce IX.
Pokračování v popisu funcí html_
html_options
Funkce zajišťuje vytváření selectů. Parametry se velice přibližuje funkci „_checkboxes“. Proto opět platí, že v případě předevání neasociativních polí je nutné vyplnit položky: „values“ a „output“. V opačném případě se tyto parametry nevyplňují a naopak je nutné zadat „options“.Parametr „selected“ pak určuje která hodnota má být vybrána jako defaultní. Funkce také v případě zadání vícerozměrného pole seskupí hodnoty do tagu „optgroup“. Výsledný select je pak XHTML validní.
index.php
<?php
require_once("./hlavicka.php");
$user_id= array('1','5','2','15');
$user_name = array('Jan Postulka', 'Honza Koblika', 'Tomas Jeseter', 'Jindra Banan');
$smarty->assign('is_checked' , '2');
$smarty->assign('style', 'width:150px;');
$smarty->assign('user_id', $user_id);
$smarty->assign('user_name', $user_name);
$smarty->display('index.tpl');
?>
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{html_options name=foo values=$user_id output=$user_name selected=$is_selected}
</p>
{include file='./paticka.tpl'}
A ještě krátká ukázka, jak krásně nám funkce rozdělí data do „skupin“. Data jsou uloženy ve dvou vrstvách, což funkce pochopí jako dvě skupiny a rekurzivní vypsání provede i vevnitř polí.
index.php
<?php
require_once("./hlavicka.php");
$user['sporty'] = array(1 => 'Golf', 9 => 'Plavani',27 => 'Hokej');
$user['relax'] = array(3 => 'masaz',1 => 'sauna');
$smarty->assign('user', $user);
$smarty->display('index.tpl');
?>
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{html_options name=select_1 options=$user}
</p>
{include file='./paticka.tpl'}
html_radios
Tato funkce vytváří radio_buttony. Opět platí stejné podmínky. Tedy povinně vyplněný buď „options“, nebo naopak „values“ a „output“.Velmi vhodnou funkcí, který kodérům ušetří práci, je právě funkce tato, a funkce následující. Slouží k jednoduchému vytváření html formulářů přímo přes rozhraní Smarty. Hlavní předností je hlavně jednoduché přiřazení hodnot čerpaných z aplikační logiky. V případě, že tedy předáváme např. data z databáze, jež potřebujeme použít pro následnou interakci od uživatele, vystačíme si bez cyklu „foreach“, či „section“. Stylování se pak provádí přidáním našeho vlastního, nového parametru. Všechny formuláře pak splňují podmínky pro validitu XHTML.
Tento příklad je pro html_checkboxes
- name – jméno checkboxu defaultně:checkbox (nepovinný)
- values - hodnoty, předané jako jednorozměrný array == pole, v html mají ekvivalent v hodnotě „value“ defaultně: --- (povinný)
- output - hodnoty, předávě jako jednorozměrný array == pole. V HTML mají ekvivalent popisku checkboxu. defaultně: ---(povinný)
- selected - zatrhnutý checkbox defaultně: (nepovinný)
- options – výstup checkboxu, v případě, že používáme asociativní pole defaultně:
empty(nepovinný) - separator – oddělovač, vložený mezi jednotlivé checkboxy defaultně: ---(nepovinný)
- assign - přiřazení checkboxu do proměnné v šabloně defaultně: ---(nepovinný)
index.php
<?php
require_once("./hlavicka.php");
$user = array(1 => 'Tom osm',
2 => 'Jan pet',
3 => 'Tonda Sedesat Tri',
4 => 'Milan Banan');
$smarty->assign('is_checked' , '4');
$smarty->assign('style', 'width:400px;');
$smarty->assign('user', $user);
$smarty->display('index.tpl');
?>
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
<div><strong>Vyber možnost:</strong></div>
{html_radios name='mujcheckbox' selected=$is_checked style=$style options=$user separator='<br/>'}
</p>
{include file='./paticka.tpl'}
Použití je tedy naprosto totožné s „html_checkboxes“.