{html_options}{html_options} est une
fonction personnalisée
qui crée un groupe d'options avec les données fournies. Elle prend en charge
les éléments sélectionnés par défaut.
Nom attributTypeRequisDefautDescriptionvaluesarrayOui, à moins que vous n'utilisiez
l'attribut optionsn/aUn tableau de valeurs pour les listes
déroulantesoutputarrayOui, à moins que vous n'utilisiez
l'attribut optionsn/aUn tableau de libellés pour la liste
déroulanteselectedchaîne de caractères/tableauNonemptyLes éléments sélectionnésoptionsTableau associatifOui, à moins que vous n'utilisiez option
et valuesn/aUn tableau associatif valeur / libellénamechaîne de caractèresNonemptyNom du goupe d'options
Les attributs requis sont
values et output,
à moins que vous n'utilisiez options à la place.
Si l'attribut optionnel name est fourni, les balises
<select></select> seront créées,
sinon, UNIQUEMENT la liste <option> sera générée.
Si la valeur fournie est un tableau, il sera traité comme un
<optgroup> HTML, et affichera les groupes.
La récursivité est supportée avec <optgroup>.
Tous les paramètres qui ne sont pas dans la liste ci-dessus sont affichés
sous la forme de paire nom/valeur dans la balise
<select>. Ils seront ignorés si le paramètre optionnel
name n'est pas fourni.
Tous les affichages sont conformes XHTML.
Un tableau associatif avec l'attribut options
assign('myOptions', array(
1800 => 'Joe Schmoe',
9904 => 'Jack Smith',
2003 => 'Charlie Brown')
);
$smarty->assign('mySelect', 9904);
?>
]]>
Le template suivant génèrera une liste. Notez la présence
de l'attribut name qui crée les
balises <select>.
L'affichage de l'exemple ci-dessus sera :
]]>
Tableaux séparés pour values et
ouptut
assign('cust_ids', array(56,92,13));
$smarty->assign('cust_names', array(
'Joe Schmoe',
'Jane Johnson',
'Charlie Brown'));
$smarty->assign('customer_id', 92);
?>
]]>
Les tableaux ci-dessus seront affichés avec le template suivant
(notez l'utilisation de la fonction PHP count() en tant que modificateur pour
définir la taille du select).
{html_options values=$cust_ids output=$cust_names selected=$customer_id}
]]>
L'exemple ci-dessous affichera :
]]>
Exemple avec une base de données (e.g. ADODB ou PEAR)
assign('contact_types',$db->getAssoc($sql));
$sql = 'select contact_id, name, email, contact_type_id
from contacts where contact_id='.$contact_id;
$smarty->assign('contact',$db->getRow($sql));
?>
]]>
Où le template pourrait être celui-ci. Notez l'utilisation du modificateur
truncate.
{html_options options=$contact_types|truncate:20 selected=$contact.type_id}
]]>
Exemple avec <optgroup>
'Golf', 9 => 'Cricket',7 => 'Swim');
$arr['Rest'] = array(3 => 'Sauna',1 => 'Massage');
$smarty->assign('lookups', $arr);
$smarty->assign('fav', 7);
?>
]]>
Le script ci-dessus et le template suivant
affichera :
]]>
Voir aussi
{html_checkboxes}
et
{html_radios}