Проблема с FormIt
Доброго времени суток! Прошу помощи по FormIt. При вызове сниппета через AjaxForm форма выводится корректно, но при отправке сообщения все данные попадают в адресную строку и письмо не приходит.
Вот вызов сниппета:
Чанк формы
{'!AjaxForm' | snippet:[
'snippet' => 'FormIt',
'form' => '@FILE chunks/contacts/contactFormItem.tpl',
'emailTpl' => '@FILE chunks/contacts/mailContacts.tpl',
'hooks' => 'email',
'emailSubject' => 'Обратная связь ' ~ $_modx->config.site_name,
'emailFrom' => 'admin@site.com',
'emailFromName' => 'admin',
'emailTo' => 'myemail@gmail.com',
'validationErrorMessage' => 'Пожалуйста, исправьте ошибки!',
'successMessage' => 'Ваше сообщение успешно отправлено',
'submitVar'=>'sendOrder'
]}
Если вызвать без AjaxForm ту же форму, то она вообще не выводится. Самое главное никаких ошибок в логе вообще не возникает. На том же сервере на других сайтах с идентичными настройками все работает корректно.Чанк формы
<form action="" method="POST" class="ajax_form af_example">
<fieldset class="margin-bottom-md">
<div class="margin-bottom-sm">
<div class="grid grid-gap-sm">
<div class="col-6@md">
<label class="form-label margin-bottom-xxs" for="af_name">Имя</label>
<input class="form-control width-100%" type="text" id="af_name" name="name" value="" required>
<span class="error_name"></span>
</div>
<div class="col-6@md">
<label class="form-label margin-bottom-xxs" for="af_email">Email</label>
<input class="form-control width-100%" type="email" id="af_email" name="email" value="" placeholder="[[%af_label_email]]" required>
</div>
</div>
</div>
<div>
<label class="form-label margin-bottom-xxs" for="af_message">Сообщение</label>
<textarea class="form-control width-100%" id="af_message" name="message"></textarea>
</div>
</fieldset>
<div>
<button type="submit" name="sendOrder" class="btn btn--primary">Отправить</button>
</div>
[[+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>
Чанк сообщения:<p><b>Имя:</b> [[+name]]</p>
<p><b>Email:</b> [[+email]]</p>
<p><b>Текст сообщения:</b></p>
<p>[[+message]]</p>
Комментарии: 14
А чанк формы и чанк репорта можно посмотреть?
Все выложил выше. Совсем забыл про них)
Нужно убрать name у button submit, и добавить скрытый инпут с name который прописан в submitVar:
Либо в принципе не использовать параметр submitVar, для ajaxForm он не нужен.
<form action="" method="POST" class="ajax_form af_example">
<input type="hidden" name="sendOrder" value="1" />
<fieldset class="margin-bottom-md">
<div class="margin-bottom-sm">
<div class="grid grid-gap-sm">
<div class="col-6@md">
<label class="form-label margin-bottom-xxs" for="af_name">Имя</label>
<input class="form-control width-100%" type="text" id="af_name" name="name" value="[[+fi.name]]" required>
<span class="error_name"></span>
</div>
<div class="col-6@md">
<label class="form-label margin-bottom-xxs" for="af_email">Email</label>
<input class="form-control width-100%" type="email" id="af_email" name="email" value="[[+fi.email]]" placeholder="[[%af_label_email]]" required>
</div>
</div>
</div>
<div>
<label class="form-label margin-bottom-xxs" for="af_message">Сообщение</label>
<textarea class="form-control width-100%" id="af_message" name="message">[[+fi.message]]</textarea>
</div>
</fieldset>
<div>
<button type="submit" class="btn btn-primary">Отправить</button>
</div>
[[+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>
Либо в принципе не использовать параметр submitVar, для ajaxForm он не нужен.
Не помогает, куда копать даже не знаю.
Еще есть один нюанс, форма работает только для спам-ботов, так как письма со спамом приходят постоянно, но я не понимаю как так получается, если форма не работает.
Вообще впервые с таким столкнулся, обычно если есть какя-то проблема, то в логах все ошибки отображаются, а тут ничего.
Еще есть один нюанс, форма работает только для спам-ботов, так как письма со спамом приходят постоянно, но я не понимаю как так получается, если форма не работает.
Вообще впервые с таким столкнулся, обычно если есть какя-то проблема, то в логах все ошибки отображаются, а тут ничего.
Код я проверил на действующем сайте, 100% рабочий. Попробуйте протестировать форму на пустой странице, без лишних сниппетов, скриптов и оформления, возможно в вашем случае что что стороннее мешает.
Проверил, без стилей без скриптов, все тоже самое. После отправки все данные выводит в адресной строке и все, никаких ошибок, ровно как и отправки письма.
Куда еще можно копнуть? Какие еще логи можно посмотреть, чтобы ошибку хоть увидеть?
Куда еще можно копнуть? Какие еще логи можно посмотреть, чтобы ошибку хоть увидеть?
Так это потому что форма get-ом зачем то отправляется, хотя ajaxForm сам должен проставлять method=post. Вобщем то идеи кончились =) тут уже надо разбираться конкретно на вашем сайте, может плагины самописные есть, или ещё что. В ajaxForm никакие правки не вносились?
Да в том то и дело, что правок никаких не вносил, самописных плагинов тоже не делал. Вот сейчас еще проверил такая проблема, что если вызвать FormIt без AjaxForm, то он форму не выводит вообще, при этом опять ошибок в логе нет) Такое чувство, что сам FormIt отказывается работать, но почему нет ошибок тогда. Уже пробовал переустанавливать сниппеты и сам modx, ничего не меняется.
Антон. А у Вас конслоли есть ошибки JS?
Сейчас все проверил в 2-х браузерах, консоль чистая, как до попытки отправки, так и после.
Если есть возможность, пришлите доступы на почту (кнопка в профиле), очень интересно посмотреть на такую мистическую проблему =)
Все, нашел проблему, надо быть внимательнее) На странице тег
<form>
был запущен 2 раза. Переключился на другие задачи и потом еще раз посмотрел свежим взглядом все шаблоны и чанки и в итоге обнаружил то, что пропустил.
Проверь на наличие не закрытых div
Все закрыты
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.