Настройка полей формы
Создадим форму и будем на примерах отображать HTML в шаблоне и изменять параметры ее полей.
$fields = [
['Ваше имя', 'char', 'name', ['required' => true],
['Пол', 'enum', 'gender', ['values_list' => ['Мужской', 'Женский']]],
['Email', 'email', 'email'],
['Получать новости', 'bool', 'news_subscribe'],
['Дополнительная информация', 'text', 'about', ['help_text' => 'Расскажите о себе']]
];
$form = new Form($fields);
//Вывод всех полей формы, по умолчанию выводится в тэгах div
echo $form -> display();
//Вывод двух полей в тэгах div
echo $form -> display(['name', 'email']);
//Вывод всех полей формы, в виде таблицы
echo $form -> display('*', 'table');
//Вывод всех полей формы (только inputs)
echo $form -> display('*', 'inputs');
//Вывод выборочных полей формы (только inputs)
echo $form -> display(['name', 'about', 'email'], 'inputs');
//Вывод html кода для отдельного поля формы (без названия)
echo $form -> displayFieldHtml('gender');
//Вывод формы с ошибками, прикрепленными к полям
echo $form -> setDisplayWithErrors() -> display();
//Добавить в поля placeholders (названия)
$form -> setNamesAsPlaceholders();
echo $form -> display('*', 'inputs');
Добавление / удаление поля
$form = new Form($fields);
//Операции над полями выполняются до валидации и вывода на экран полей формы
$form -> addField(['Номер телефона', 'phone', 'phone_number']);
$form -> removeField('news_subscribe');
...
$form -> submit() -> validate();
...
echo $form -> display();
Изменение параметров полей
//Сделать поле обязательным для заполнения
$form -> setRequired('about');
//Сделать все поля обязательными для заполнения
$form -> setRequired('*');
//Сделать несколько полей обязательными для заполнения
$form -> setRequiredFields(['email', 'about']);
//Задать название поля
$form -> setCaption('email', 'Электронная почта');
//Задать поясняющий текст к полю
$form -> setHelpText('news_subscribe', 'Рассылка приходит не чаще раза в месяц');
//Задать дополнительные html параметры поля (атрибуты: id, class, title)
$form -> setHtmlParams('about', 'id="about-me" class="text-field" rows="12"');
//Дополнительные html параметры для нескольких полей
$form -> setHtmlParams(['email', 'name'], 'class="text-input"');
//Задать placeholder для поля
$form -> setPlaceholder('email', 'Электронная почта');
Дополнительные возможности
//Если значениями поля типа enum являются данные другой модели
//(внешний ключ), то их можно фильтровать
$form -> filterValuesList('city', ['active' => 1, 'order->asc' => 'name']);
//Для поля типа date можно задавать отображение в виде 3 select тэгов
$form -> setDisplaySelects('date');
//Для поля типа enum можно задать отображение в виде radio кнопок
$form -> setDisplayRadio('gender', 2);
//Для полей типа enum и many_to_many вывести значения в виде таблицы с чекбоксами
//(2 - количество колонок таблицы)
$form -> setDisplayTable('interests', 2);
Предыдущий раздел
Создание форм