FormLister: управление формами

Примеры и пояснения

Здесь соберутся некоторые приемы, которые используются для тонкой настройки.

03.04.2023

Форма для получения и обработки данных - один из основных элементов взаимодействия с пользователем. Сейчас принято использовать сниппет FormLister, который позволяет управлять полученными данными для огромного числа сценариев взаимодействия.

С помощью сниппетов prepare можно уточнить поведение контроллера и добавить обработку данных. Обратите внимание, не в каждом контроллере есть одинаковый набор сниппетов prepare, но чаще всего вы можете рассчитывать на prepare, prepareProcess, prepareAfterProcess. Значениями этих параметров может быть также массив названий сниппетов или функций.

Универсальные функции

В сниппетах prepare можно использовать следующие методы FormLister:

$FormLister->setField($field, $value) - установить значение поля $field как $value. Можно использовать для генерации части шаблона формы, в сгенерированной строке можно использовать плейсхолдеры как для обычной формы.

$FormLister->setFields(array $fields = [], $prefix = '') - установить несколько значений; $prefix добавляет префикс к имени поля, если префикс заканчивается на подчеркивание(_), то префикс и имя разделяются подчеркиванием, иначе - точкой.

$FormLister->getField($field, $default = '') - получить значение поля $field.

$FormLister->unsetField($field, $checkAlias = true) - удалить поле.

$FormLister->unsetFields(array $fields, $checkAlias = true) - удалить набор полей.

$FormLister->isSubmitted():bool - проверяет, были ли отправлены данные.

$FormLister->isValid():bool - проверяет, есть ли сообщения об ошибках (конкретно, есть ли что-то в массиве errors).

$FormLister->setValid(bool $valid) - устанавливает статус валидации.

$FormLister->addError($field, $type, $message) - добавляет информацию об ошибке (в массив errors); $field - имя поля, $type - тип ошибки, $message - сообщение об ошибке.

$FormLister->addMessage($message = '') - добавляет сообщение в массив messages.

$FormLister->log($message, $data = []) - добавляет запись в лог, если установлен debug.

Это не полный перечень, изучите классы Core и классы контроллеров, чтобы получить полное представление о возможностях.

Управление конфигрурацией

$FormLister->config->setConfig($cfg, $overwrite = false) - установить параметры конфигурации.

$FormLister->getCFGDef($name, $def = null) - получить параметр конфига, обертка для $FormLister->config->getCFGDef($name, $def = null).

При изменении параметра rules нужно иметь в виду, что при валидации данных формы правила будут получены из параметра rules в текущей конфигруации и "соединены" (merge) с правилами, указанными при вызове сниппета в этом же параметре.

Form: изменение email получателя и темы письма

Изменить адрес получателя (параметр &to), а также значения схожих по смыслу параметров можно в коде предварительной обработки данных с помощью параметров prepare и prepareProcess.

Список параметров, которые можно поменять указанным способом:

  • &isHtml - разрешает отправлять письмо в формате html, возможные значения - 1, 0, по умолчанию - 1.
  • &to - адрес получателя, если не указан, то письмо не отправляется, но считается успешно отправленным.
  • &from - адрес отправителя.
  • &fromName - имя отправителя.
  • &subject - тема письма.
  • &replyTo - заголовок replyTo.
  • &cc - заголовок cc.
  • &bcc - заголовок bcc.
  • &noemail - если параметр задан, то письмо не отправляется, но считается успешно отправленным, возможные значения - 1, 0, по умолчанию - 0.

Изменение адреса получателя:

$FormLister->mailConfig['to']='test@test.ru';