Appearance
Формы
Предупреждение
Для работы с формами крайне не рекомендуется использовать модуль битрикс form.
Описание
Каждая форма на сайте на бекенде является классом формы \Realweb\Api\Model\Form\Entity с описанием полей формы.
Форма должна иметь название и метод отправки
php
protected ?string $_method = "post";
protected ?string $_name = "form-name";Доступные методы
GETPOSTPUTPATCH
Форма должна реализовывать protected методы _init*, которые описывают поля формы.
Пример
php
protected function _initName(): void
{
$obField = $this->createInputText("name")
->setLabel("Имя")
;
}Поля формы
Форма может иметь следующие поля:
Button- кнопкаGoogleCaptcha- Google reCAPTCHA v3InputCheckbox- чекбоксInputEmail- emailInputFile- файлInputHidden- скрытое полеInputNumber- числоInputPassword- парольInputPhone- телефонInputRadio- радиоInputSubmit- кнопка submitInputText- текстPrivacy- согласие на обработку персональных данныхSelect- список выбораTextarea- текстареяGroup- группа полей
Поля добавляются на форму магическим методом create* с названием поля, например, createInputText
Валидация
Для валидации значения поля используются специальные валидоры - экземпляры класса \Realweb\Api\Model\Form\Validate\Entity.
Валидатор добавляется к полю методом addValidator
Пример
php
protected function _initName(): void
{
$obField = $this->createInputText("name")
->setLabel("Имя")
->addValidator(
(new \Realweb\Api\Model\Form\Validate\Entity\Required())->setMessage('Поле "Имя" обязательно для заполнения')
)
;
}Форма валидируется с помощью метода isValid. При создании формы в нее передаются параметры запроса
php
use Realweb\Api\Module\Form;
$obForm = new Form\Model\Some\Form();
$obForm->initRequestParams($this->getRequestParams());
if (!$obForm->isValid()) {
//Обработка ошибок
}Список валидаторов
\Realweb\Api\Model\Form\Validate\Entity\Email- Формат email\Realweb\Api\Model\Form\Validate\Entity\GoogleCaptcha- валидация отправленной GoogleCaptcha\Realweb\Api\Model\Form\Validate\Entity\Phone- телефон, не рекомендуется к использованию, рекомендуется использовать проверку Dadata\Realweb\Api\Model\Form\Validate\Entity\Regex- регулярное выражение\Realweb\Api\Model\Form\Validate\Entity\Required- обязательное заполнение\Realweb\Api\Model\Form\Validate\Entity\Callback- коллбек, свой метод проверки, не рекомендуется к использованию *\Realweb\Api\Model\Form\Validate\Entity\File\Error- корректная загрузка файла\Realweb\Api\Model\Form\Validate\Entity\File\Extension- расширение файла\Realweb\Api\Model\Form\Validate\Entity\File\Mime- тип файла\Realweb\Api\Model\Form\Validate\Entity\File\Size- размер файла
Callback
Вместо валидатора Callback удобнее использовать свои валидаторы, наследующиеся от класса \Realweb\Api\Model\Form\Validate\Entity.
Каждый валидатор имеет метод setMessage - установка сообщения об ошибке
Создание своего валидатора
Свои валидаторы должны наследоваться от класса \Realweb\Api\Model\Form\Validate\Entity и реализовывать метод _isValid
php
protected function _isValid($mValue): bool
{
if (strlen($mValue) > 0) {
//Проверка
}
return true;
}