AjaxForm + FormIt отправляет письмо всегда

Использую хук math для антиспама. На фронтэнде валидирует правильно — показывает ошибки и т.д.
Но FormIt постоянно отправляет сообщения, даже если на фронте валидация не правильная. В логах ничего нет.

На фронте
<div class="form-group">
        <label class="control-label" for="af_math">Сколько будет [[!+fi.op1]] [[!+fi.operator]] [[!+fi.op2]]?</label>
        <div class="controls">
            <input id="af_math" class="form-control" rows="5" type="text" name="math" value="[[+fi.math]]"/>
            <input type="hidden" name="op1" value="[[!+fi.op1]]" />
            <input type="hidden" name="op2" value="[[!+fi.op2]]" />
            <input type="hidden" name="operator" value="[[!+fi.operator]]" />
            <span class="error_math">[[!+fi.error.math]]</span>
        </div>
    </div>
Вызов AjaxForm

[[!AjaxForm? 
    &snippet=`FormIt` 
    &form=`tpl.AjaxForm.example` 
    &hooks=`email,math` 
    &emailSubject=`Обращение с сайта` 
    &emailTo=`it@domen.ru` 
    &validate=`name:required,email:required,message:required,math:required` 
    &validationErrorMessage=`В форме содержатся ошибки!` 
    &successMessage=`Сообщение успешно отправлено` 
    &emailFrom=`[[++mail_smtp_user]]`
    &emailTpl=`tplEmailFeedback`
]]
UPD:
Так всё заработало:
&hooks=`math,email`
Anton Bukreev
29 августа 2017, 07:01
modx.pro
1
1 594
+1

Комментарии: 2

Александр
29 августа 2017, 10:21
0
На сколько мне известно капчи работают так:
Генерируют картинку перед выводом формы, результат капчи сохраняется в сессиях, и при вводе данных — идет сверка по сессии.
[[!AjaxForm? 
    &snippet=`FormIt` 
    &form=`tpl.AjaxForm.example` 
    &preHooks=`math`
    &hooks=`email,math` 
    &emailSubject=`Обращение с сайта` 
    &emailTo=`it@domen.ru` 
    &validate=`name:required,email:required,message:required,math:required` 
    &validationErrorMessage=`В форме содержатся ошибки!` 
    &successMessage=`Сообщение успешно отправлено` 
    &emailFrom=`[[++mail_smtp_user]]`
    &emailTpl=`tplEmailFeedback`
]]
• «рreHook» задается через свойство «preHooks» в сниппете FormIt, который выполняется при загрузке формы. Полезно для предварительной загрузки значений.

• обычный хук, задается через свойство «hooks» в сниппете FormIt, который выполняется после проверки формы. Пригодится для настраиваемой пост-обработки.
    Алексей Ерохин
    29 августа 2017, 10:37
    +3
    &hooks=`email,math`
    У вас сначала выполняется хук email, а потом math. Поменяйте местами
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2