waHtmlControl

Создание элементов HTML-форм

Содержание...

В большинстве случаев для получения HTML-кода стандартного элемента формы достаточно вызвать метод класса getControl.

Если необходимо создать нестандартный элемент формы с собственным идентификатором типа, то нужно сначала вызвать метод registerControl, который должен вернуть HTML-код такого элемента. Затем можно вызвать метод getControl и в качестве параметра передать в этот метод свой собственный идентификатор типа элемента.

Методы

public static final function addNamespace (&$params, $namespace = '')

Добавляет пространство имен в значение атрибута name элемента формы. Пространство имен создается путем формирования имени переменной-массива, ключом которого становится исходное значение атрибута name.

Параметры

Пример

$params = array();
waHtmlControl::addNamespace($params, 'some');
$control = waHtmlControl::getControl(waHtmlControl::INPUT, 'test', $params);

Результат

<input ... name="some[test]" ...>

Пример

$params = array();
waHtmlControl::addNamespace($params, array('some', 'other'));
$control = waHtmlControl::getControl(waHtmlControl::INPUT, 'test', $params);

Результат

<input ... name="some[other][test]" ...>

public static function getControl ($type, $name, $params = array())

Возвращает HTML-код элемента формы.

Параметры

Пример

$control_params = array(
    'namespace'           => 'settings',
    'control_wrapper'     => '<div class="field"><div class="name">%s</div><div class="value">%s%s</div></div>',
    'title_wrapper'       => '%s',
    'description_wrapper' => '<br><span class="hint">%s</span>'
);
$controls = array(
    waHtmlControl::getControl(waHtmlControl::CHECKBOX, 'setting1', array(
        'checked' => true,
        'value'   => 1,
        'title'   => 'Флажок',
        'description'   => 'Включите или отключите',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::CONTACTFIELD, 'setting2', array(
        'title' => 'Контактное поле',
        'description'   => 'Выберите контактное поле',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::FILE, 'setting3', array(
        'title' => 'Файл',
        'description'   => 'Выберите файл на вашем компьютере',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::GROUPBOX, 'setting4', array(
        'options' => array(
            1 => 'первый',
            2 => 'второй',
            3 => 'третий',
        ),
        'value' => array(1, 3),
        'title' => 'Флажки',
        'description'   => 'Выберите любое количество вариантов',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::HIDDEN, 'setting5', array(
        'value' => ifset($setting5),
    )),
    waHtmlControl::getControl(waHtmlControl::INPUT, 'setting6', array(
        'title'       => 'Строка текста',
        'placeholder' => 'введите короткий текст',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::PASSWORD, 'setting7', array(
        'title' => 'Пароль',
        'placeholder' => 'введите пароль',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::RADIOGROUP, 'setting8', array(
        'options' => array(
            1 => 'первый',
            2 => 'второй',
            3 => 'третий',
        ),
        'value' => 2,
        'title' => 'Радиокнопки',
        'description'   => 'Выберите один из вариантов',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::SELECT, 'setting9', array(
        'options' => array(
            1 => 'первый',
            2 => 'второй',
            3 => 'третий',
        ),
        'value' => 3,
        'title' => 'Выпадающий список',
        'description'   => 'Выберите один из элементов списка',
    ) + $control_params),
    waHtmlControl::getControl(waHtmlControl::TEXTAREA, 'setting10', array(
        'value' => ifset($setting9),
        'title' => 'Многострочное поле',
        'placeholder' => 'введите длинный текст',
    ) + $control_params),
);

public static function registerControl ($type, $callback)

Добавляет пользовательский тип элементов формы в список доступных для использования с помощью метода getControl.

Параметры

Пример

class someClass
{
    public function execute()
    {
        //...
        waHtmlControl::registerControl('Mycontrol', array(__CLASS__, 'getControl'));
        wa()->getView()->assign('mycontrol', waHtmlControl::getControl('Mycontrol', $params));
        //...
    }
    public static function getControl($name, $params = array())
    {
        //...    реализация пользовательского элемента
        return '...';   //возвращаем HTML-код элемента
    }
}