Параметры

    Общие параметры

    Эти параметры обрабатываются базовым классом FormLister. В контроллерах некоторые общие параметры могут иметь другое назначение.

    Настройки

    controller

    Задает класс для обработки данных.

    Возможные значения - имя php-файла с классом без расширения.

    Значение по умолчанию - Form.

    dir

    Папка в которой находится класс контроллера.

    Значение по умолчанию - assets/snippets/FormLister/core/controller/

    formid

    Имя формы, обязательный параметр.

    В шаблоне формы обязательно должно быть скрытое поле с именем formid и значением, указанным в параметре. Форма считается отправленной, если в массиве $_REQUEST присутствует ключ с именем параметра, а его значение соответствует значению параметра.

    formMethod

    Определяет способ получения данных запроса:

    • post - из массива $_POST;
    • get - из массива $_GET;
    • request - из массива $_REQUEST;
    • результат вызова анонимной функции или метода класса.

    Возможные значения - post, get, request, имя анонимной функции или метода класса.

    Значение по умолчанию - post.

    disableSubmit

    Запрещает отправку формы. Если значение параметра равно 1, то форма не будет считаться отправленной.

    Возможные значения - 0, 1.

    Значение по умолчанию - 0.

    config

    Загрузка параметров в формате json из файла.

    Возможные значения - имяфайла:папка, несколько значений разделяются точкой с запятой.

    Пример

    myparams:core - загрузить параметры из файла assets/snippets/FormLister/config/core/myparams.json; myparams - загрузить параметры из файла assets/snippets/FormLister/config/custom/myparams.json; myparams:/assets/myfolder - загрузить параметры из файла assets/myfolder/myparams.json.

    Значение по умолчанию - пусто.

    api

    Определяет, в каком виде будут выводиться данные.

    Возможные значения:

    • 0: только html;
    • 1: массив с данными формы;
    • 2: массив с данными формы и html;
    • 3: объект контроллера.

    apiFormat

    Формат вывода данных для api-режимов 1 или 2.

    Возможные значения - json, array.

    Значение по умолчанию - json.

    debug

    Режим отладки. Вывод записывается в лог MODX.

    Возможные значения - 0, 1.

    Значение по умолчанию - 0.

    saveObject

    Сохраняет объект класса FormLister в плейсхолдер, который можно использовать в других сниппетах. Объект сохраняется только при успешной обработке формы.

    Возможные значения - имя плейсхолдера.

    Значение по умолчанию - пусто.

    removeGpc

    Убирает экранирование данных, которое выполняет MODX для символов {{, [[ и т.д. При этом экранируются тэги MODX при выводе.

    Возножные значения - 0, 1 или имена полей через запятую.

    Значение по умолчанию - 0.

    Источники данных

    defaultsSources

    Позволяет загружать дополнительные данные из внешних источников, например, для предварительного заполнения полей формы. По умолчанию внешние данные загружаются только при начальном выводе формы и не загружаются после отправки формы Это поведение может быть изменено с помощью параметра keepDefaults.

    Возможные значения: список источников, разделенных точкой с запятой. Загрузка данных производится в том порядке, в котором они указаны в списке.

    Источник может задаваться в формате "имя:ключ:префикс". Префикс, если указан, добавляется c точкой к имени поля - например, config.sitename. Если префикс заканчивается подчеркиванием (), то вместо точки будет использоваться подчеркивание (user_fullname), чтобы избежать преобразования точки в подчеркивание в PHP (https://www.php.net/manual/ru/language.variables.external.php).

    Возможные значения:

    • array: json или php-массив, значения задаются параметром defaults;
    • param:имя параметра:префикс - значения задаются значением параметра из вызова сниппета (аналогично array, только значение задается не параметром defaults, а произвольным, также можно указать префикс);
    • session:ключи через запятую:префикс - значения загружаются из массива $_SESSION согласно указанным ключам, значение может быть массивом;
    • plh:ключи через запятую:префикс - загружаются значения из массива $modx->placeholders согласно указанным ключам, значение может быть массивом;
    • cookie:ключи через запятую:префикс - загружаются значения из массива $_COOKIE согласно указанным ключам, значение может быть json-массивом;
    • config:префикс - загружаются значения из конфигурации MODX;
    • имя класса MODxAPI:ключ:префикс - ключ является аргументом метода edit(), класс должен быть заранее загружен;
    • document:префикс - загружает данные из модели modResource для документа, в котором вызван сниппет. Ключ не указывается;
    • user:ключ:префикс - загружает данные из модели modUsers для авторизованного пользователя. Тип пользователя уточняется в ключе (web или mgr).

    Значение по умолчанию - array.

    defaults

    Данные для источника array.

    Возможные значения: массив значений по умолчанию, в формате json или php.

    keepDefaults

    Позволяет повторно загружать данные из внешних источников после отправки формы. Если в параметре указан список полей, то загружены будут только указанные поля.

    Возможные значения: 1, 0, имена полей, разделенные запятой.

    Значение по умолчанию - 0.

    allowEmptyFields

    Разрешает задавать поля с пустыми значениями.

    Возможные значения - 0 или 1.

    Значение по умолчанию - 1.

    fieldAliases

    Задает псевдонимы полей. Например, для поля "foo" задан псевдоним "bar":

    $FormLister->setField("foo", 10);
    $FormLister->getField("bar"); //10
    $FormLister->setField("bar", 20);
    $FormLister->getField("foo"); //20
    $FormLister->unsetField("foo");
    $FormLister->getField("foo"); //Пусто
    $FormLister->getField("bar"); //Пусто (но если бы было unsetField("foo", false), то поле "bar" осталось бы; 

    Возможные значения - массив вида:

    &fieldAliases=`{
        "имя поле":"псевдоним",
        "имя поля":"псевдоним"
    }

    Значение по умолчанию - пусто.

    Элементы управления

    formControls

    Список полей с управляющими элементами формы (списки, чекбоксы, радио-кнопки). Необходимо для отслеживания состояния элементов.

    Возможные значения - имена полей, разделенные запятой.

    Значение по умолчанию - пусто.

    emptyFormControls

    Этот параметр позволяет решить проблему неотмеченных чекбоксов, которые не включаются в массив полей при отправке формы: если в $_REQUEST отсутствует нужный элемент, то он создается согласно данному параметру. Необходимость в таком параметре возникла в связи с тем, что MODxAPI требует явно указывать изменяемые поля в методе fromArray(). Но можно использовать и в обычных формах, чтобы подставить в шаблон значение неотмеченного чекбокса.

    Возможные значения - массив:

    &emptyFormControls=`{
        "mycheckbox" : "Нет",
        "published" : 0
    }`

    Обработка данных

    prepare, prepareProcess, prepareAfterProcess

    Аналогично параметру prepare в DocLister.

    Сниппеты из параметра prepare выполняются после загрузки данных в форму, сниппеты из параметра prepareProcess - после прохождения валидации, сниппеты из параметра prepareAfterProcess - после успешного выполнения обработки. В сниппетах через переменную $FormLister доступен объект контроллера, а через массив $data - значения полей формы. Также доступна переменная $name, которая задержит имя параметра из которого взят сниппет (prepare, prepareProcess и т.д.); это позволяет использовать один и тот же сниппет для разных случаев. Для изменения данных следует использовать в prepare-сниппетах методы контроллера (setField, setFields и т.д.), но можно и просто вернуть массив с измененными данными.

    Возможные значения - имена сниппетов, анонимные функции, статические методы загруженных классов.

    Значение по умолчанию - пусто.

    Фильтрация

    filterer

    Имя класса для фильтрации данных. Класс должен быть предварительно загружен.

    Значение по умолчанию - \FormLister\Filters.

    filters

    Массив с правилами фильтрации.

    Значение по умолчанию - пусто.

    Валидация

    validator

    Имя класса для валидации данных. Класс должен быть предварительно загружен.

    Значение по умолчанию - \FormLister\Validator.

    rules

    Массив с правилами валидации.

    Значение по умолчанию - пусто.

    fileValidator

    Имя класса для валидации файлов. Если задано, то класс должен быть загружен заранее.

    Значение по умолчанию - \FormLister\FileValidator

    fileRules

    Массив с правилами валидации.

    Значение по умолчанию - пусто.

    Шаблоны

    formTpl

    Шаблон формы. В шаблоне формы обязательно должно быть поле с именем formid и значением, указанным в параметре formid.

    Возможные значения - имя шаблона, указанное по правилам задания шаблонов в DocLister.

    Значение по умолчанию - пусто.

    arraySplitter

    Разделитель для преобразования массивов в строку.

    Значение по умолчанию - точка с запятой.

    {field}.arraySplitter

    Разделитель для преобразования массивов в строку, но для отдельного поля {field}. Например: groups.arraySplitter - разделитель для массива из поля groups.

    Если не задано, то используется значение параметра arraySplitter.

    errorTpl

    Шаблон для вывода сообщений валидатора.

    Возможные значения - имя шаблона, указанное по правилам задания шаблонов в DocLister.

    Значение по умолчанию:

    @CODE:<div class="error">[+message+]</div>

    requiredClass, errorClass

    Имена классов для обозначения незаполненных (required) и неверно заполенных (error) полей.

    Значение по умолчанию - required и error соответственно.

    {field}.requiredClass, {field}.errorClass

    Позволяет задавать указанные выше классы для конкретных полей.

    По умолчанию используются значения параметров requiredClass и errorClass.

    messagesTpl

    Шаблон сообщений обработчика формы. В шаблоне выводятся группы сообщений (messages, required, error).

    Возможные значения - имя шаблона, указанное по правилам задания шаблонов в DocLister.

    Значение по умолчанию:

    @CODE:<div class="form-messages">[+messages+]</div>

    messagesOuterTpl

    Шаблон-обертка для группы произвольных сообщений.

    Возможные значения - имя шаблона, указанное по правилам задания шаблонов в DocLister.

    Значение по умолчанию -

    @CODE: [+messages+]

    messagesRequiredOuterTpl

    Шаблон-обертка для группы сообщений о незаполненных полях.

    Возможные значения - имя шаблона, указанное по правилам задания шаблонов в DocLister.

    Значение по умолчанию:

    @CODE: [+messages+]

    messagesErrorOuterTpl

    Шаблон-обертка для группы сообщений о неверно заполненных полях.

    Возможные значения - имя шаблона, указанное по правилам задания шаблонов в DocLister.

    Значение по умолчанию:

    @CODE: [+messages+]

    messagesSplitter, messagesRequiredSplitter, messagesErrorSplitter

    Разделитель сообщений в группе.

    Возможные значения - произвольная строка.

    Значение по умолчанию:

    <br>

    removeEmptyPlaceholders

    Удаляет из шаблонов незаполненные прейслхолдеры.

    Возможные значения - 0 или 1.

    Значение по умолчанию - 1.

    parseDocumentSource

    Обрабатывает чанки MODX-парсером.

    Возможные значения - 0 или 1.

    Значение по умолчанию - 0.

    rewriteUrls

    Если параметр parseDocumentSource отключен, то парсит ссылки в шаблонах.

    Возможные значения - 0 или 1.

    Значение по умолчанию - 0.

    skipPrerender

    Позволяет отключить предварительную обработку полей формы (экранирование значений, преобразование массивов в строки, установка сообщений об ошибках). Можно включить, если для вывода не используется парсер MODX.

    Возможные значения - 0 или 1.

    Значение по умолчанию - 0.

    prerenderErrors

    При включенном параметре skipPrerender позволяет выполнить обработку только ошибок формы с сохранением результатов в массив плейсхолдеров. Для использования сторонних шаблонизаторов.

    Возможные значения - 0 или 1.

    Значение по умолчанию - 0.

    templatePath, templateExtension

    Путь к папке с файлами шаблонов и расширение файлов шаблонов. Эти параметры необходимо задавать при использовании плагина EvoTwig.

    Значение по умолчанию - пусто.

    Перенаправление после обработки

    redirectTo

    Id страницы, на которую нужно выполнить перенаправление после успешной обработки формы. В api-режиме перенаправление не выполняется, но в массиве данных формы сохраняется абсолютная ссылка на целевую страницу (поле "redirectTo").

    Вместо числа можно указывать массив:

    &redirectTo=`{
        "page":10,
        "query":{
            "foo":"bar"
        },
        "header":"HTTP/1.1 307 Temporary Redirect"
    }`

    Ключ page задает id станицы, в массиве query можно передать дополнительные get-параметры, значением ключа header может быть текст заголовка для перенаправления.

    Возможные значения - число или массив.

    Значение по умолчанию - пусто.