29 июня 2015 г., 13:37

FormIt не отрабатывает на втором контексте.

Всем доброго дня. Достался сайт на стареньком Revo 2.2.10 Нужно было реализовать английскую версию. Сделал с помощью контекстов. Все хорошо, за исключением формы обратной связи. Она никак не работает. На русской версии все ок, на английской версии не отрабатывает. Не выкидывает сообщений о незаполнености обязательных полей, а если все заполнено верно, то не редиректит на страницу с сообщением об успешной отправке письма, и не отсылает письмо на почту. В логах никаких ошибок при этом нет.
Контексты настраивал по этой статье: https://bezumkin.ru/sections/tips_and_tricks/2439/
вызов FormIt-а самый обычный:
[[!FormIt? &hooks=`spam,email,redirect` &emailTpl=`EmailReport` &emailTo=`mymail@gmail.com` &emailSubject=`Сообщение с сайта [[++site_name]]` &redirectTo=`172` &validate=`name:required, email:email:required, text:required:stripTags` ]]
<form class="form" action="[[~[[*id]]]]" method="post"><input type="hidden" name="nospam:blank" value="" /> <div><label for="name"> Your name:* [[!+fi.error.name]] </label> <input id="name" type="text" name="name" value="[[!+fi.name]]" /></div> <div><label for="email"> Your e-mail:* [[!+fi.error.email]] </label> <input id="email" type="text" name="email" value="[[!+fi.email]]" /></div> <div><label for="phone"> Your phone: [[!+fi.error.phone]] </label> <input id="phone" type="text" name="phone" value="[[!+fi.phone]]" /></div> <div><label for="text"> Your message:* [[!+fi.error.text]] </label> <textarea id="text" name="text" rows="7" cols="55">[[!+fi.text]]<textarea></div> <div class="form-buttons"><input type="submit" value="Send" /></div> <p class="form-desc">* Required informations</p> </form>
Попробуйте для начала убрать параметр redirectTo. Из-за разных контекстов он может просто не получить этот документ и на этом и обломиться. Но это так, предположения. Глубоко копать не хочу, так как формит не интересен.
P.S. обновите версию MODX-а хотя бы до последней 2.2+, а то взломают, замучаетесь.
Согласен с Николаем. Если вам важен редирект, создайте в другом контексте нужную страницу, которая будет иметь, естественно, другой id. Потом добавьте новый чанк для второго контекста с правильным редиректом. У меня так работает. Два контекста, но не en-ru, а просто два домена верхнего уровня. Николай, а что посоветуете вместо formit? И почему, если не секрет?
Мы использует form-процессор. Почему? Потому что это процессор, и его можно как из шаблона вызывать, так и через коннектор. Обработка стандартизированная — интерпретируй как хочешь. Еще и сразу работа с modCaptcha прописана.
Спасибо! Посмотрел. Буду заменять. Поначалу без костылей не обойтись, но когда начинаешь въезжать в логику работы, хочется ускориться :)
Установите ShopModxBox и посмотрите как там форма обратной связи работает. Используется расширяющий процессор.
Именно так и сделано. В контексте EN создана страничка для редиректа. Убрал redirectTo и из хуков redirect, все равно не хотят отправляться письма. К стати, щас обратил внимание, фоска вообще не отрабатывает никак, даже не выскакивают ошибки, если не заполнены обязательные поля. Просто перезагружается страничка, и форма очищается. Коды и вызовы фосок одинаковы для обоих контентов. В русском все работает, в английском нет.
Все, заработало. Спасибо за ответы. Подсказали прописать вот так:
<form class="form" action="" method="post">
(до этого было
action="[[~[[*id]]]]
"), письма начали уходить, форма проверяется. Редирект работает.

Добавить комментарий