Бакрин Андрей
6 мар. 2015 г., 17:25

Несколько форм на странице

Здравствуйте. Пытаюсь разместить несколько форм на странице с помощью связки AjaxForm и Formit. Проблема в том, что если указываю параметр &emailTo=`test@test.ru` то отображается только та форма, которая забита в шаблоне. А 2 других формы, которые размещены в контенте страницы не отображаются. Более того, весь контент страницы пропадает.
Ничего с этим не подскажу, formIt не использую. А что не использует form-процессор?
Вообще непонятка какая-то. Создал в формах скрытые поля emailto и emailfrom и в вызове прописал &emailTo=`[[+emailto]]` и &emailFrom=`[[+emailfrom]]` все стало работать как положено. Первый раз такая шляпа. А чем пользуетесь Вы для форм обратной связи?
С 2-мя формами с FormIt есть несколько заковырок, я тоже долго не мог понять почему на всех страницах форма обратного звонка нормально работает, кроме страницы контактов, где тоже был вызов сниппета FormIt. Пока не понял принцип его работы. FormIt обрабатывает POST запрос, и в зависимости от настроек производит какие-либо действия (валидация полей, отправка сообщения, редирект и т.д.). Но если на странице Formit вызван дважды или более, то возникают проблемы, т.к. он 2 или более раз попытается обработать один и тот же POST запрос (если в запросе одинаковые переменные). Поэтому я нашел 2 пути решения проблемы: 1. Оставлять только 1 вызов, но если поля в 2-х формах разные, то необходимо ставить «заглушки» (поля co style=«display:hidden» cо значениями по-умолчанию); 2. По возможности в формах в поле action ставить разные id, и создать пустую страницу с FormIt.
Спасибо, попробую. Но у меня все работает в связке с AjaxForm и тап есть параметр &submitVar=`1`, позволяющий раскидывать обработку разных форм.
Я написал: form-процессор. У нас везде только он и используется. Там и отправка уведомлений, и проверка каптчи если надо, и проверка полей, и вызов субпроцессоров, если надо (например, если надо создать новый заказ на лету).
Было бы здорово, если бы Вы написали топик о том, как пользоваться Вашим form-процессором.
Вряд ли я в ближайшее время напишу такую статью. Да и смысла в ней особо нет. Посмотрите исходный код этого процессора, а так же как в сборке ShopModxBox реализована форма обратной связи на странице контактов и все. Там логика не особо объемная.
кстати Николай, тут батябест прав, т.к. надо свой обработчик POST запроса писать. И захотел вас за нелогичность кое-где упрекнуть, но вчитавшись в код, понял что я ошибся и неслабо((, и sendManagersEmail просто функция класса, а не дефолтная функция. Иногда я поражаюсь, как можно в грамотно не избыточный функционал написать, но который расширить можно. я некоторые компоненты modx за переизбыточность и недолюбливал. Но я и смарти недолюбливаю, хотя он иногда в скорости прирост дает, но MVC паттрен он разрушает((.А зачастую, это дорабортки сайта упрощает.
кстати Николай, тут батябест прав, т.к. надо свой обработчик POST запроса писать. И захотел вас за нелогичность кое-где упрекнуть, но вчитавшись в код, понял что я ошибся и неслабо((
Да, там на странице можно хоть сколько форм обрабатывать. К примеру, я чаще всего просто определяю по имени сабмит-кнопки (здесь name=«feedback_submit»), чтобы если именно эта форма отправляется, обрабатывать ее данные.
Но я и смарти недолюбливаю, хотя он иногда в скорости прирост дает, но MVC паттрен он разрушает((
Назовите мне хоть один современный шаблонизатор, который, к примеру, не поддерживает циклы или условия :)
тут вопрос созрел почти в тему, возможна ли отправка на почту типа имя@письмо.рф? модх как я уже понял не хочет пропускать подобные имена ящиков.
Мне так показалось, что он не пропускает имена типа имя@site.ru, не?
там проверка на соответствие регулярному выражению стоит и походу кириллицу не пропускает.
А какого же икса у меня с латиницей не прокатывало? Непонятка))
Да, там регулярка. Ее имеет смысл обновить уже, она там совсем не идеальная.
кроме этого регулярка в core/model/modx/mail/phpmailer/class.phpmailer.php стоит, я пробовал их поотключать все равно письмо не отправило :(
Пробуйте для начала попробовать отправить функцией mail(). Может она не принимает кириллические домены, и надо указывать их альтернативные названия типа xn--aaaaaaaaaa.....xn--p1ai
попробовал, не принимает. :( joxi.ru/D2PBeKNikx56r3 с обычным адресом отработало, а вот кириллический не приняло joxi.ru/Y2Lqe61tQg5YA6
Так вы пробуйте не @письмо.рф, а @xn--h1aigbl0e.xn--p1ai

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