Jump to main content Jump to doc navigation

Что такое FormIt?

FormIt - это динамический Сниппет обработки форм для MODX Revolution. Он обрабатывает форму после отправки, выполняя проверку и последующие действия, такие как отправка электронного письма. Он не создает форму, но может повторно заполнить ее, если проверка не была пройдена.

История

FormIt был написан Shaun McCormick как Компонент для обработки форм и впервые выпущен 19 октября 2009 г. В настоящее время поддерживается командой Sterc.

Скачать

Formit можно загрузить из Менеджера MODX Revolution через Управление пакетами или из репозитория MODX здесь: https://modx.com/extras/package/formit.

Разработка и ошибки

FormIt хранится и разрабатывается в GitHub, и его можно найти здесь: https://github.com/Sterc/FormIt

Здесь можно писать об ошибках: https://github.com/Sterc/FormIt/issues

Документацию по API также можно найти здесь: https://api.modx.com/formit/

Важные изменения

FormIt 3.0 представляет обновление методов шифрования, используемых для шифрования отправленных форм. До версии 3.0 использовался mcrypt, который в версии 3.0 заменен на openssl из-за того, что mcrypt устарел с версии PHP 7.2. FormIt 3.0 поставляется со страницей миграции, доступной из Менеджера.

Начиная с FormIt 2.2.9, ко всем полям автоматически применяется html_entities. Чтобы разрешить сохранение HTML-тегов, вам нужно будет использовать валидатор allowSpecialChars для каждого поля, который должен сохранять необработанные html-теги.

Начиная с FormIt 1.1.4, ко всем полям будут автоматически применяться stripTags. Чтобы разрешить сохранение HTML-тегов, вам нужно будет использовать валидатор allowTags для каждого поля, определяя, какие теги разрешены.

Как использовать

Просто поместите вызов Сниппета FormIt в Ресурс, содержащий форму, которую вы хотите использовать. В отличие от аналогичных предшественников (особенно eForm в MODX Evolution), вы не помещаете форму в Чанк и не ссылаетесь на него в вызове сниппета FormIt: вы буквально помещаете вызов Сниппета рядом с формой, которую хотите обработать. Укажите «hooks» (или сценарии обработки после проверки) в вызове Сниппета. Затем добавьте проверку с помощью параметров &validate и &customValidators.

Если у вас есть несколько форм на странице, установите для свойства &submitVar в вызове Cниппета имя элемента формы (например, &submitVar = form1-submit). Это указывает FormIt обрабатывать запросы формы только, если в переданных полях формы (POST) есть эта переменная. Если у вас на одной странице несколько форм, обрабатываемых Formit, следует использовать теги с INPUT type = "submit" name = "form1-submit", элементы button работать не будут.

Доступные свойства

Это доступные общие свойства для вызова FormIt (не включая свойства, специфичные для хуков):

Имя Описание Значение по умолчанию
preHooks Какие скрипты запускать, если они есть, после загрузки формы. Это может быть список хуков, разделенных запятыми, и если первый не сработает, последующие также не будут использованы. Хук также может быть именем другого Сниппета, который будет выполнять этот Сниппет.
renderHooks Какие скрипты запускать, если они есть, после загрузки формы, завершения preHooks и установки всех полей и ошибок. Это может быть разделенный запятыми список Хуков, используемых для управления всеми полями формы до того, как все будет установлено на основе данных из других пакетов или предварительных хуков. Хук также может быть именем Сниппета, который будет выполнять этот Сниппет.
hooks Какие скрипты запускать, если они есть, после того, как форма прошла проверку. Это может быть список хуков, разделенных запятыми, и если первый не сработает, последующие не сработают также. Хук также может быть именем Сниппета, который будет выполнять этот Сниппет.
submitVar Если установлено, обработка формы не начнется, если эта переменная POST не передана. Примечание: этот параметр необходим, если вы используете свойство &store (+ установить submit переменную в input="submit"!).
validate Список полей для проверки, разделенных запятыми, для каждого поля в виде имя:валидатор (например: username: required, email: required). Валидаторы также могут быть связаны цепочкой, например, email:email:required. Это свойство также можно указать в нескольких строках.
validationErrorMessage Общее сообщение об ошибке, которое следует установить в качестве Плейсхолдера [[!+fi.validation_error_message]] в случае сбоя проверки. Может содержать [[+errors]], если вы хотите вывести список всех ошибок. Произошла ошибка проверки формы. Пожалуйста, проверьте введенные вами значения .
validationErrorBulkTpl HTML tpl, который используется для каждой отдельной ошибки в общем сообщении об ошибках валидации. [[+error]]
errTpl HTML-обёртка для сообщений об ошибках. Примечание: не чанк, а простой HTML. [[+error]]
customValidators Список имен настраиваемых валидаторов(сниппетов), разделенных запятыми, которые вы планируете использовать в этой форме. Они должны быть явно указаны здесь, иначе они не будут запущены.
clearFieldsOnSuccess Если указано, очистит поля при успешной отправке формы без перенаправления. 1
store Если указано, данные будут храниться в кэше для извлечения с помощью сниппета FormItRetriever. 0
storeTime В секундах, если указано, задает количество секунд для хранения данных после отправки формы. По умолчанию - пять минут. 300
storeLocation При использовании store это свойство определяет, где форма будет храниться после отправки. Возможные варианты: cache и session. cache
placeholderPrefix Префикс, используемый для всех Плейсхолдеров, установленных FormIt для полей. Не забудьте добавить "." разделитель в вашем префиксе. fi.
successMessage Если redirect хук не используется, отобразите это сообщение после успешной отправки.
successMessagePlaceholder Имя Плейсхолдера, для которого нужно установить сообщение об успешном завершении. fi.successMessage
redirectTo Идентификатор страницы а-ля "Ваша форма успешно отправлена", куда посетитель может быть отправлен после успешной отправки формы, но этот параметр читается ТОЛЬКО, если вы включили redirect в список хуков(параметр &hooks).
allowFiles Укажите, разрешена ли передача файлов. Отправленные файлы хранятся во временном каталоге, чтобы файлы не терялись, если у вас форма состоит из нескольких шагов. 1
attachFilesToEmail Прикрепляет загруженные файлы к электронному письму, форма должна иметь атрибут enctype="multipart/form-data" 1

Валидация

Проверка в Formit выполняется с помощью свойства &validate и может использоваться для автоматической обработки любого из полей вашей формы.

Для получения дополнительной информации о проверке в FormIt смотрите Валидаторы.

Хуки

Хуки - это в основном скрипты, которые запускаются во время обработки FormIt. Они всегда выполняются в том порядке, в котором они указаны в свойстве. Если, например, у вас есть хук для электронной почты, за которой следует хук валидации, электронное письмо будет отправлено до того, как произойдет проверка.

Если какой-либо хук завершится с ошибкой, последующие за ним не будут выполняться.

Для получения дополнительной информации о хуках смотрите Хуки.

Посмотрите также

  1. Хуки
    1. FormIt.Hooks.email
    2. FormIt.Hooks.FormItAutoResponder
    3. FormIt.Hooks.math
    4. FormIt.Hooks.recaptcha
    5. FormIt.Hooks.redirect
    6. FormIt.Hooks.spam
    7. FormIt.Hooks.FormItSaveForm
  2. Валидаторы
  3. FormItRetriever
  4. Руководства и примеры
    1. Пользовательский произвольный хук
    2. Пример простой формы
    3. Обработка выпадающих списков, чекбоксов и радио кнопок
    4. Использование пустого поля для защиты от спама
  5. FormItCountryOptions
  6. FormItStateOptions

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Jens Wittmann – Gestaltung & Entwicklung
  • Fabian Christen
  • Digital Penguin
  • Dannevang Digital
  • Sepia River Studios
  • CrewMark
  • Chris Fickling
  • deJaya
  • Following Sea
  • Anton Tarasov
  • eydolan
  • Raffy
  • Lefthandmedia
  • Murray Wood
  • Snow Creative
  • Nick Clark
  • Helen
  • JT Skaggs
  • krisznet
  • YJ
  • Yanni
  • Richard

Budget

$366 per month—let's make that $500!

Learn more