Прерывание обработки формы и перезагрузка событий часто являются неотъемлемой частью кода проекта, обеспечивая основную логику работы его скриптов и само выполнение задач, ради которых он создавался. В  процессе создания форм обратной связи с компонентом Chronoforms для этих целей используются функции «Event Loader» и «Event Loop».

«Event Loader» в Chronoforms 6 и «Event Loop» — в пятой версии, являются вспомогательными инструментами и служат для прерывания текущей обработки формы и вызова указанного события в момент получения другими обработчиками определенных результатов, которые представляют собой собственные события этих функций.

В редакторах форм обеих версий  компонента эти функции представлены в списке элементов меню (слева), которые находятся во вкладках «Установка» (Install), а в случаях, когда форма создается в базовом режиме, уже сгенерированы и расположены в правильном порядке.

Установка и настройка функций «Event Loader» и «Event Loop» на формах Chronoforms

Прерывание обработки формы с помощью функций-обработчиков Event Loader и Event Loop в новых версиях Chronoforms

Рис. 1

Некоторые функции-обработчики имеют собственные события. Например, обработчики проверки полей (см. рис. 1) имеют по два собственных события: одно наступает в случае успешной проверки, другое — в случае отрицательного результата. В данном случае, если не прервать обработку формы при наступлении события «fail», то после выполнения кода валидатора остальные скрипты формы продолжат свою работу и будут выполнять следующее в очереди действие. В итоге, даже не смотря на то, что обязательные поля не заполнены, или заполнены неправильно, или же ответ пользователя на проверочный вопрос неверен, отправка формы будет произведена как есть, даже при соблюдении правильной очередности расстановки обработчиков в теле события. 

Таким образом, чтобы предотвратить отправку формы с пустыми или некорректно заполненными полями, следует использовать данные инструменты.  Устанавливать их где угодно в теле события смысла не имеет. Они нужны в тех случаях, когда на форме присутствуют имеющие собственные события обработчики, и необходимость вызова одних функций логически зависит от результатов выполнения других.

Функции компонента Chronoforms, которые имеют собственные события

Функция CF5 Функция CF6
Files Upload Delete Data
Check Captcha Read Data
DB Read Save Data
Joomla Login CURL
Joomla Registration Upload Files
Authorize.net – Trial Login
2Checkout Listener Save User
PayPal Data Processor User activation
PayPal Listener If Conditions 
PayPal Pro – Trial Event Switcher
Authenticator 2CO Listener
Submit Limit PayPal IPN
User is Logged in Check Honeypot
Event Switcher Check Google reCaptcha
Server Validation Validate Fields
  Check Security image
  Validate Data
  Zapier webhook

Для того, чтобы установить  «Event Loader» (или «Event Loop») в код своего текущего проекта, нужно перетащить мышью соответствующий  элемент в область события (см. рис. 1) на то место в теле события формы, где требуется прерывание какой-либо функции с последующей перезагрузкой необходимого события.

Функции «Event Loader» и «Event Loop» по умолчанию имеют все, необходимые для их правильной работы, настройки и, в большинстве случаев, их корректировка не требуется. Значение в поле «Имя события» (Event name) (см. рис 2) можно изменять вручную в зависимости от того, какое событие нужно перезагрузить. Имя вызываемого события должно точно соответствовать своему имени на форме, присвоенному при его автоматической генерации или при создании вручную.

В CF6 есть также возможность выбора, будет прервана дальнейшая обработка формы или нет (см. рис. 2). Такая возможность настраивается с помощью переключателя «Остановить обработку после срабатывания» (Stop processing after switching). В Chronoforms 5 такой опции нет, поэтому функция «Event Loop»  всегда будет прерывать дальнейшее исполнение кода в том месте, где она была вызвана (размещена).

Настроки обработчиков прерывания обработки форм Event Loader и Event Loop в Chronoforms 5 и 6

Рис. 2