What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{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}