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