Всем привет!
Прошу помощи: на сайте создал всплывающее окно, открывающееся по кнопке, с заказом обратного звонка, всё как обычно, реализовано с помощью ajaxform, вот код вывода сниппета:
[[AjaxForm? &snippet=`FormIt` &form=`tpl.AjaxForm` &emailTpl=`sentEmailTpl` &emailSubject=`Тестовое сообщение` &emailTo=`mm@yandex.ru` &successMessage=`Сообщение успешно отправлено` &validate=`name:required,email:required ` &validationErrorMessage=`В форме содержатся ошибки!` ]]
вот чанк tpl.AjaxForm:
<h2>ЗАКАЗАТЬ ЗВОНОК</h2> <form id="contact" name="contact" action="" method="post" class="ajax_form"> <label class="control-label" for="af_name">[[%af_label_name]]</label> <input type="text" id="af_name" name="name" value="[[+fi.name]]" placeholder="" class="span4" /><br /> <span class="error_name">[[+fi.error.name]]</span> <label class="control-label" for="af_email">[[%af_label_email]]</label> <input type="email" id="af_email" name="email" value="[[+fi.email]]" placeholder="" class="span4" /><br /> <span class="error_email">[[+fi.error.email]]</span> <button type="submit" class="btn btn-primary">[[%af_submit]]</button> [[+fi.success:is=`1`:then=` <div class="alert alert-success">[[+fi.successMessage]]</div> `]] [[+fi.validation_error:is=`1`:then=` <div class="alert alert-danger">[[+fi.validation_error_message]]</div> `]] </form>
вот чанк sentEmailTpl:
[[+name]] <br /> [[+email]] <br /> [[+message]]
Всё валидируется, пишет, что письмо отправлено, но на почту ничего не приходит! Друзья, проверьте, пожалуйста, код, возможно у меня уже глаз замылился и я не вижу простейшей ошибки? Подскажите, в какую сторону можно копать?
Ещё момент: на сайте реализован отдельный php-скрипт отправки почты — он работает без проблем… возможно, необходимо покопаться в настройках formIt или ajaxForm, просто я не смог найти нужных параметров…
разумеется, почту забил правильно — тысячу раз проверил!)))
Подскажите, пожалуйста, буду очень признателен!
Может все-таки не кешируемым сниппет прописать? [[!AjaxForm…
А так подобные вещи уже обсуждались не раз здесь, мы AjaxForm не используем, а используем form-процессор.
Николай, благодарю за оперативный ответ! К сожалению, не помогло...(
Мне кажется, что тут сам formIt не отрабатывает… просто не догоняю, как это можно проверить!
Судя по тому, что страница выводит «Внимание! Телефон может содержать только цифры.», все-таки сам сниппет отрабатывает. Скорее всего просто с сайта почта на отправляется.
Поставьте Console и проверьте в принципе отправку почты, выполнив два отдельных кода:
1. Просто через функцию mail()
print (int)mail('test@some.host', 'subject', 'message');
2. Через MODX:
print (int)$modx->user->sendEmail('message');
Желательно, чтобы оба варианта вернули 1. Просто есть подозрение, что ваш сервер просто не отправляет почту.
В остальном, я вам больше ничем не помогу. Там так все замучено (AjaxForm использует еще FormIt, в итоге отлаживать надо и то и другое), что даже я, потратив 15 минут, не смог получить вменяемого результата. Все-таки процессоры прозрачней, там отладка лучше.
Спасибо, Николай, буду копать!))
Не за что!
Если еще актуально. Нахожу вашу проблему похожей на мое приключение
В вызове сниппета добавьте добавьте хук «email».
&hooks=`email`
Не знаю, ответит ли кто-то нибудь мне здесь или нет. Выполнил в консоли 2 команды, вернули 1, только после второй не пришло письмо (интересно, на какой адрес оно отправилось?)
У меня стоит в ajaxform &hooks=`email`, но письмо всё равно не приходит. Пробовал отдельно formit делать, письмо приходит, но хотелось бы без перезагрузки страницы через ajaxform запустить.
У меня на другом сайте письма отправляются нормально через ajaxform, при том, что оба сайта на одном сервере находятся.
vladim-filip, дайте хоть на код взглянуть))) Какой вызов сниппета, какой чанк? И что значит: "вернули один"?
Николай выше писал:
" Поставьте Console и проверьте в принципе отправку почты, выполнив два отдельных кода: 1. Просто через функцию mail()
print (int)mail('test@some.host', 'subject', 'message');
2. Через MODX:
print (int)$modx->user->sendEmail('message');
Желательно, чтобы оба варианта вернули 1."
Вот тут у меня возвращается 1 в обоих вариантах.
Вот код вызова сниппета:
Вот код формы vogelCallbackFormTpl:
Ё-моё. Разобрался. У меня в &validate идёт поле captcha1, а в форме captcha просто называется. Теперь всё работает.