html_options

Имя аттрибута Тип Обязателен По умолчанию Описание
values массив Да, если не указан аттрибут options n/a массив значений для выпадающего списка
output массив Да, если не указан аттрибут options n/a массив названий для выпадающего списка
selected string/array Нет пусто Выбранный элемент(ы)
options ассоциативный массив Да, если не указаны аттрибуты values и output n/a ассоциативный массив значений и названий
name строка (string) Нет пусто Название выпадающего списка

пользовательская функция html_options генерирует группу html тэгов option по указанной информации. Также заботится о выбранных по умолчанию элементах. Аттрибуты values и output обязательны, если не указан аттрибут options.

Если данное значение - массив, то оно будет представлено в виде html OPTGROUP. Рекурсия с OPTGROUP поддерживается. Весь вывод совместим с XHTML.

Если указан необязательный аттрибут name , то группа опций заключится в тэг <select name="groupname"> и </select>, иначе сгенерируется только группа опций.

Все параметры, которые не указаны выше, выводятся в виде пары name/value внутри тэга <select>-tag. Они игнорируются, если аттрибут name не указан.

Пример 8-8. html_options

index.php:

 require('Smarty.php.class');
 $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.php.class');
 $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: (both examples)

 <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>