====== Тег {{input}} ====== ===== Описание ===== Расширенная форма html-тега . Является потомком [[lmb_macro_form_element_tag]]. ===== Синтаксис ===== {{input id='id' type='text|checkbox|hidden...' [...любые html-параметры]/}} ===== Атрибуты ===== * **type** - тип поля (text, hidden, image, button, password, submit, reset, file, checkbox, radio) * Наследованные атрибуты [[.:lmb_macro_form_element_tag#атрибуты| Атрибуты lmbMacroFormElementTag]] ===== Содержимое ===== Нет. ===== Widget (runtime компонент) ===== В откомпилированном виде каждому **%%{{input}}%%** тегу соответствует объект определенного класса или так называемый runtime компонент. То, какой компонент будет выбран, зависит от атрибута **type**. Вот таблица соответствия: ^Тип^Класс компонента^ |text, hidden, image, button|lmbMacroInputWidget| |password, submit, reset, file|lmbMacroFormElementWidget| |checkbox, radio|lmbMacroCheckableInputWidget| * lmbMacroInputWidget - рендерит для тега в любом случае атрибут **value**. * lmbMacroCheckableInputWidget - трактует value как значение, с которым нужно знавнить так называемое **checked_value**. Набор правил, по которым checkbox или radio становится checked см. ниже. ===== Как работают checkbox-ы и radio ===== Если для обычных input-ов атрибут value определяет значение поля, то для type='checkbox' и type='radio' атрибут **value** имеет другое значение: **value** используется как значение, с которым нужно сравнить некое **checked_value**. Этот **checked_value** определяется следующим образом: * Сначала проверяется наличие атрибута **checked_value** * Если этого атрибута нет, тогда берется значение в соответствие с runtime_id из контейнера данных родительского тега **%%{{form}}%%** (runtime_id равно id или name) Потом на основе **value** и **checked_value** вычисляется, нужно ли выводить (рендерить) для тега атрибут checked. Атрибут **checked** выводится если: ^ checked_value ^ value ^ пример ^ | массив | есть в массиве | %%{{input type="checkbox" checked_value="$#obj->getTypesArray()" value="foo"}}%% | | скаляр | равен checked_value | %%{{input type="checkbox" checked_value="foo" value="foo"}}%% | | скаляр | отсутствует | %%{{input type="checkbox" checked_value="foo"}}%% | | 0 или false | 0 | %%{{input type="checkbox" checked_value="0" value="0"}}%% | или если он указан явно. ===== Пример использования ===== ==== text, hidden ==== {{input type="text" name="name" id="name" title="Имя и фамилия"/}} ==== checkbox ==== {{input type="checkbox" id="test" name="my_input" value="1" checked_value="{$bar}" /}} Получим: ==== radio ==== Выберите тип пользователя: