BiOpSIhoS 29 июня 2015 0 7
Всем доброго дня.
Достался сайт на стареньком 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>
7 комментариев
Fi1osof1
Fi1osof 30 июня 2015г в 21:46 #
Попробуйте для начала убрать параметр redirectTo. Из-за разных контекстов он может просто не получить этот документ и на этом и обломиться. Но это так, предположения. Глубоко копать не хочу, так как формит не интересен.

P.S. обновите версию MODX-а хотя бы до последней 2.2+, а то взломают, замучаетесь.
r
romb 04 июля 2015г в 14:08 #
Согласен с Николаем. Если вам важен редирект, создайте в другом контексте нужную страницу, которая будет иметь, естественно, другой id. Потом добавьте новый чанк для второго контекста с правильным редиректом. У меня так работает. Два контекста, но не en-ru, а просто два домена верхнего уровня.
Николай, а что посоветуете вместо formit? И почему, если не секрет?
Fi1osof1
Fi1osof 04 июля 2015г в 14:17 #
Мы использует form-процессор. Почему? Потому что это процессор, и его можно как из шаблона вызывать, так и через коннектор. Обработка стандартизированная — интерпретируй как хочешь. Еще и сразу работа с modCaptcha прописана.
r
romb 04 июля 2015г в 15:33 #
Спасибо! Посмотрел. Буду заменять. Поначалу без костылей не обойтись, но когда начинаешь въезжать в логику работы, хочется ускориться :)
Fi1osof1
Fi1osof 04 июля 2015г в 15:36 #
Установите ShopModxBox и посмотрите как там форма обратной связи работает. Используется расширяющий процессор.
B
BiOpSIhoS 14 июля 2015г в 10:14 #
Именно так и сделано.
В контексте EN создана страничка для редиректа.
Убрал redirectTo и из хуков redirect, все равно не хотят отправляться письма.
К стати, щас обратил внимание, фоска вообще не отрабатывает никак, даже не выскакивают ошибки, если не заполнены обязательные поля. Просто перезагружается страничка, и форма очищается.
Коды и вызовы фосок одинаковы для обоих контентов. В русском все работает, в английском нет.
B
BiOpSIhoS 14 июля 2015г в 13:49 #
Все, заработало. Спасибо за ответы.
Подсказали прописать вот так:
<form class="form" action="" method="post">

(до этого было
action="[[~[[*id]]]]
"), письма начали уходить, форма проверяется. Редирект работает.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.