Параметри

    Загальні параметри

    Ці параметри обробляються базовим класом FormLister. У контролерах деякі загальні параметри можуть мати інше призначення.

    Налаштування

    controller

    Задає клас для обробки даних.

    Можливі значення - ім'я php-файла з класом без розширення.

    Значення за замовчуванням - Form.

    dir

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

    Значення за замовчуванням - assets/snippets/FormLister/core/controller/

    formid

    Ім'я форми, обов'язковий параметр.

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

    formMethod

    Можливі значення - post, get або request.

    Значення за замовчуванням - post.

    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: json-масив з даними форми;
    • 2: json-масив з даними форми і html.

    debug

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

    Можливі значення - 0, 1.

    Значення за замовчуванням - 0.

    saveObject

    Зберігає об'єкт класу FormLister в плейсхолдер, який можна використовувати в інших сніпетах. Об'єкт зберігається тільки при успішній обробці форми.

    Можливі значення - ім'я плейсхолдера.

    Значення за замовчуванням - порожньо.

    removeGpc

    Прибирає екранування даних, яке виконує MODX для символів {{ , [[ і т.д. При цьому екрануються теги MODX при виведенні.

    Возножние значення - 0, 1 або імена полів через кому.

    Значення за замовчуванням - 0.

    Джерела даних

    defaultsSources

    Дозволяє завантажувати додаткові дані із зовнішніх джерел, наприклад, для попереднього заповнення полів форми. За замовчуванням зовнішні дані завантажуються тільки при початковому виведенні форми і не завантажуються після відправки форми. Ця поведінка може бути змінена за допомогою параметра keepDefaults.

    Можливі значення: список джерел, між якими ставиться крапка з комою. Завантаження даних проводиться в тому порядку, в якому вони вказані в списку.

    Джерело може здаватися в форматі "ім'я:ключ:префікс". Префікс, якщо вказано, додається c точкою до імені поля - наприклад, config.site_name.

    Можливі значення:

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

    Значення за замовчуванням - array.

    defaults

    Дані для джерела array.

    Можливі значення: масив значень за замовчуванням, в форматі json або php.

    keepDefaults

    Дозволяє повторно завантажувати дані з зовнішніх джерел після відправки форми. Якщо в параметрі вказаний список полів, то завантажені будуть тільки зазначені поля.

    Можливі значення: 1, 0, імена полів, розділені комою.

    Значення за замовчуванням - 0.

    allowEmptyFields

    Дозволяє задавати поля з порожніми значеннями.

    Можливі значення - 0 або 1.

    Значення за замовчуванням - 1.

    Елементи управління

    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 і т.д.)

    Можливі значення - імена сніпетів, анонімні функції, статичні методи завантажених класів.

    Значення за замовчуванням - порожньо.

    Валідація

    validator

    Ім'я класу для валідації даних. Клас повинен бути попередньо завантажений.

    Значення за замовчуванням - \FormLister\Validator.

    rules

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

    Значення за замовчуванням - порожньо.

    Шаблони

    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.

    Значення за замовчуванням - 0.

    parseDocumentSource

    Обробляє чанки MODX-парсером.

    Можливі значення - 0 або 1.

    Значення за замовчуванням - 0.

    rewriteUrls

    Якщо параметр parseDocumentSource відключений, то парсить посилання в шаблонах.

    Можливі значення - 0 або 1.

    Значення за замовчуванням - 0.

    skipPrerender

    Дозволяє відключити попередню обробку полів форми (екранування значень, перетворення масивів в рядки, установка повідомлень про помилки). Можна включити, якщо для виведення не використовується парсер MODX.

    Можливі значення - 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 може бути текст заголовка для перенаправлення.

    Можливі значення - число або масив.

    Значення за замовчуванням - порожньо.