Расширенная форма html тега <select>.
Является потомком ControlTag.
Список опций из тегов <option> генерится тегом <select> на лету во время исполнения шаблона. При этом можно передать список отпций на этапе компиляции, а можно задать его прямо в шаблоне.
<select> самостоятельно помещает нужные опции как выбранные. Для этого в контейнер данных тега <form> нужно передать целочисленное значение, равное атрибуту value тега <option>. Если используется <select> с возможностью выбора нескольких элементов, то контейнер данных формы для поля <select> должен содержать массив значений. см. пример ниже.
см. раздел "Использование select тегов", который объясняет различные способы задания <option> списков.
см. также тег <select:options_source>, который используется для заполнения списка опций на этапе выполнения шаблона._
<select id='cities' name='cities' [multiple]> <option>..</option>... </select>
Обычно список тегов <option> или ничего, если список опций передается на этапе выполнения шаблона.
То, какой компонент времени исполнения шаблона будет выбран, зависит от атрибута multiple. Если он установлен, то будет создан WactSelectMultipleComponent, в противном случае - WactSelectSingleComponent.
Методы обоих компонентов идентично, но отрабатывают они немного по разному.
Рабочие примеры можно найти в папке limb/wact/examples/tags/form/select/.
<form id='countries' [...] runat='server'> <tr> <td> <select name="Country" id="Country"></select> </td> </tr> </form>
Вот так будет выглядеть php-код, который заполнит список опций тега <select>:
$template = new WactTemplate('select.html'); $form = $template->getChild('countries'); $country = $form->getChild('Country'); $countries_list = array('1' => 'Russia', '2' => 'Ukraine', '3' => 'USA'); $country->setChoices($countries_list); $form->set('Country', 3); // пометит USA, как выбранную опцию // Если мы select использовался с атрибутом multiple: // $form->set('Country', array(1, 3)); // пометит Russia и USA, как выбранные опции
Обсуждение