| Nome Attributo | Tipo | Obbligatorio | Default | Descrizione |
|---|---|---|---|---|
| values | array | sì, a meno che si usi l'attributo options | nessuno | array di valori per il menù a discesa |
| output | array | sì, a meno che si usi l'attributo options | nessuno | array di output per il menù a discesa |
| selected | stringa/array | no | vuoto | l'elemento/gli elementi selezionato/i |
| options | array associativo | sì, a meno che si usino values e output | nessuno | array associativo di valori e output |
| name | stringa | no | vuoto | nome del gruppo select |
html_options è una funzione utente che usa i dati forniti per creare un gruppo di opzioni, cioè di valori option per un menù a discesa (casella select). Si occupa anche di quale o quali valori devono essere preselezionati. Gli attributi obbligatori sono values e output, a meno che non usiate invece options.
Se uno dei valori forniti è un array, verrà trattato come un gruppo di opzioni (OPTGROUP), e visualizzato di conseguenza. E' possibile creare gruppi ricorsivi (a più livelli). Tutto l'output generato è compatibile XHTML.
Se viene fornito l'attributo opzionale name, la lista di opzioni verrà racchiusa con il tag <select name="groupname"></select>. In caso contrario verrà generata solo la lista di opzioni.
Tutti i parametri non compresi nella lista qui sopra verranno stampati come coppie nome/valore nel tag <select>. Saranno ignorati se l'attributo name non è presente.
Example 8.8. html_options
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('cust_ids', array(1000,1001,1002,1003));
$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
Johnson','Carlie Brown'));
$smarty->assign('customer_id', 1001);
$smarty->display('index.tpl');
index.tpl:
<select name=customer_id>
{html_options values=$cust_ids selected=$customer_id output=$cust_names}
</select>
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('cust_options', array(
1001 => 'Joe Schmoe',
1002 => 'Jack Smith',
1003 => 'Jane Johnson',
1004 => 'Charlie Brown'));
$smarty->assign('customer_id', 1001);
$smarty->display('index.tpl');
index.tpl:
<select name=customer_id>
{html_options options=$cust_options selected=$customer_id}
</select>
OUTPUT: (per entrambi gli esempi)
<select name=customer_id>
<option value="1000">Joe Schmoe</option>
<option value="1001" selected="selected">Jack Smith</option>
<option value="1002">Jane Johnson</option>
<option value="1003">Charlie Brown</option>
</select>