{html_options}

{html_options} является пользовательской функцией, которая создает группу HTML-тэгов option по указанной информации. Также она обеспечивает выбор элемента по умолчанию. Параметры values и output являются обязательными, если не указан атрибут options.

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

Если переданное значение - массив, оно будет принято за HTML-тэг <optgroup> и отображено в виде групп. В элементе <optgroup> поддерживается рекурсия. Весь вывод совместим с XHTML.

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

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

Example 8.12. {html_options}

Пример №1:


<?php

$smarty->assign('cust_ids', array(1000,1001,1002,1003));
$smarty->assign('cust_names', array(
                              'Joe Schmoe',
                              'Jack Smith',
                              'Jane Johnson',
                              'Charlie Brown'));
$smarty->assign('customer_id', 1001);

?>

  

Шаблон:


<select name="customer_id">
   {html_options values=$cust_ids output=$cust_names selected=$customer_id}
</select>

  

Пример №2:


<?php

$smarty->assign('cust_options', array(
                                1000 => 'Joe Schmoe',
                                1001 => 'Jack Smith',
                                1002 => 'Jane Johnson',
                                1003 => 'Charlie Brown')
                                );
$smarty->assign('customer_id', 1001);

?>

  

Шаблон:


   {html_options name=customer_id options=$cust_options selected=$customer_id}

  

Результат выполнения обоих примеров будет следующим:


<select name="customer_id">
    <option label="Joe Schmoe" value="1000">Joe Schmoe</option>
    <option label="Jack Smith" value="1001" selected="selected">Jack Smith</option>
    <option label="Jane Johnson" value="1002">Jane Johnson</option>
    <option label="Charlie Brown" value="1003">Charlie Brown</option>
</select>

  

Example 8.13. {html_options} - Пример с базой данных (к примеру, PEAR или ADODB):


<?php

$sql = 'select type_id, types from contact_types order by type';
$smarty->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));

?>

  

Шаблон:


<select name="type_id">
    <option value='null'>-- none --</option>
    {html_options options=$contact_types selected=$contact.type_id}
</select>

  

См. также {html_checkboxes} и {html_radios}