Всем доброго дня.
Достался сайт на стареньком Revo 2.2.10
Нужно было реализовать английскую версию. Сделал с помощью контекстов. Все хорошо, за исключением формы обратной связи. Она никак не работает.
На русской версии все ок, на английской версии не отрабатывает. Не выкидывает сообщений о незаполнености обязательных полей, а если все заполнено верно, то не редиректит на страницу с сообщением об успешной отправке письма, и не отсылает письмо на почту.
В логах никаких ошибок при этом нет.
вызов 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]]]]
"), письма начали уходить, форма проверяется. Редирект работает.