Проблемы с AjaxForm.

Буду рад помощи.
Организовываю отправку форм на почту на MODX. И решил воспользоваться FormIt в связке с AjaxForm. Проблема в следующем. FormIt отправляет на раз, AjaxForm — не отправляет совсем.
Вот вызов ajax
[[!AjaxForm? 
   &snippet=`FormIt`
   &hooks=`email`
     &emailFrom=`noreply@mail.ru`
   &form=`tpl.AjaxForm`
   &emailTpl=`email_tpl`
   &emailTo=`robota.melnik@yandex.ru`
   &emailSubject=`Заказ звонка с сайта`
   &validate=`name:required`
   &validationErrorMessage=`Пожалуйста, заполните поля помеченные *`

   &successMessage=`Сообщение успешно отправлено`
	]]
Сама форма tpl.AjaxForm
<form action="[[~[[*id]]]]" method="post" class="form">
    	<input type="text" name="name" id="name"/>
          <button name="submit" class="form_btn">ПЕРЕЗВОНИТЕ МНЕ</button>   
</form>
Шаблон письма email_tpl
<p>От кого: [[+name]]</p>
Все упрощено чтобы понять в чем ошибка.
Сначала AjaxForm совсем не работал, по ошибкам в консоли я понял, что версия JQuery
не подходит, понизил версию с 3.1 до 1.7 и о чудо, ошибки в консоле пропали и стали появляться всплывающие сообщения. Однако почта не приходит, даже если сообщение утверждает, что все отлично.
В спаме нет, хостинг не блокирует, ведь с Formit прилетают, да и просто через PHP тоже отлично приходит.
Замечу, что вызов Ajax Form происходит внутри модального окна FancyBox, возможно тут есть какие-то подводные камни…
В общем буду рад если покажите, в каком именно месте я туплю.
Спасибо.

PS. Решил добавить еще один вопрос, все равно он зреет)
Подскажите пожалуйста, как получить контроль над сообщениями успеха или ошибок от AjaxForm?
Я понимаю, что текст их выводится в плейсхолдеры и ими можно воспользоваться как хочешь, но не получается. К примеру взять текст из них и вывести в модальном окне вместо формы. Из чанка, в котором находится форма я совсем убрал их.
[[+fi.success:is=`1`:then=`
    <div class="alert alert-success">[[+fi.successMessage]]</div>
    `]]
Оставил только голую форму, однако сообщения упорно всплывают.
Но это ладно, это можно победить покопавшись в скрипте компонента. А вот почему не получается просто вывести текст [[+fi.successMessage]] внутри формы… Что у меня работает неправильно, кроме головы ?)
Александр Мельник
11 февраля 2017, 14:09
modx.pro
1
3 746
0

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

Евгений Webinmd
11 февраля 2017, 17:32
0
попробуйте добавить для формы класс ajax_form
Андрей Шевяков
11 февраля 2017, 22:17
1
+1
Вызов ajax
[[!AjaxForm? 
    &snippet=`FormIt`
    &hooks=`spam,email`
    &emailFrom=`noreply@mail.ru`
    &form=`tpl.AjaxForm`
    &emailTpl=`email_tpl`
    &emailTo=`robota.melnik@yandex.ru`
    &emailSubject=`Заказ звонка с сайта`
    &validate=`name:required`
    &validationErrorMessage=`Пожалуйста, заполните поля помеченные *`
    &successMessage=`Сообщение успешно отправлено`
]]

Форма tpl.AjaxForm
<form action="#" method="post" class="form ajax_form">
	<input type="text" name="name" id="name"/>
	<button type="submit" class="form_btn">ПЕРЕЗВОНИТЕ МНЕ</button>   
</form>

Шаблон письма email_tpl
<h3>[[+emailSubject]]</h3>
<p>От кого: [[+name]]</p>

А еще можно добавить в вызов ajax, чтобы письма сохранялись в бекенде.
&hooks=`spam,email,FormItSaveForm`
&formName=`Заказ звонка с сайта`
&formFields=`name`
&fieldNames=`name==От кого`
    Роман
    11 февраля 2017, 23:51
    0
    Андрей, например у меня сделано по такому же принципу, как вы написали, но форма не отправляет письма на email. Второй день уже затык с этой формой. Есть еще какие-нибудь мысли почему не работает?
      Роман
      12 февраля 2017, 12:33
      0
      Всё, народ, я нашёл свою ошибку: я не указывал &emailFrom=`forma@domen.ru`, причем домен должен быть указан именно тот, на котором стоит MODx, иначе не приходят письма (вариант mail@mail.ru не прокатит).
        Александр Мельник
        14 февраля 2017, 23:16
        0
        Странно, но мне даже указание реального домена в почте не помогло.
        Глухо совершенно, при том что просто FormIt с теми же настройками доставляет в секунду.
          Роман
          16 февраля 2017, 06:27
          0
          Александр, попробуйте сделать вызов отдельно от fancybox, вдруг дело в нем.
          Jabba
          11 октября 2018, 22:54
          0
          Дружище!!! Огромное тебе спасибо!!! Блин я два дня ковырял весь Modx пытаясь понять в чем подвох… Добавил строку и все заработало!
          Я даже зарегился специально чтобы тебя поблагодарить!!!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8