Примеры и пояснения
Здесь соберутся некоторые приемы, которые используются для тонкой настройки.
Форма для получения и обработки данных - один из основных элементов взаимодействия с пользователем. Сейчас принято использовать сниппет 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) с правилами, указанными при вызове сниппета в этом же параметре.
Изменить адрес получателя (параметр &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';