Всем привет!
Уважаемые Гуру! Напишите рецепт "ajax загрузка формы и отправка данных формы на сервер".
Сама задача по себе не сложная и чтобы реализовать ее большого ума не надо. Но сделать это на Yii без потери времени и использование костылей не представляется возможным.
Основные проблемы с которыми я столкнулся:
1) ajax - валидация
2) двойной submit + увеличение запросов на +1 (решил через .off().Двойной submit остался).
3) дублирование скриптов. Можно решить при помощи Yii::app()->clientscript->scriptMap['jquery.js'] = false, но мне кажется что это не совсем кошерно при каждом renderPartial писать список "off- скриптов".
P.S. тем по данным вопросам очень много.
Динамичный ajax
Динамичный ajax
В сознании новичка много возможностей, в сознании эксперта — лишь несколько.
Re: Динамичный ajax
2. Разбираться со скриптами, где-то лишнего навешано. Видимо п.1 из-за этого же (обработчик события вешается два раза). Можно вместо .submit() .click() и подобного использовать .live() - проще будет и всегда работать.
3. В приложение из окон всплывающих слать флаг, например isFancy. Переопределить render в родительском контроллере, который будет проверять этот флаг и делать нужный рендер.
Вообще самое просто решение - отказаться от полностью ajax'овый формы. Открылось окошко формы, заполнили её, засабмитили. Если всё ок - то хорошо, делаем что нам надо. Если возникли ошибки валидации - открываем эту форму отдельно и полноценно. Пример можно увидеть тут: http://re.monoray.ru/ - в верхней менюшке ссылка "Оставить заявку".
3. В приложение из окон всплывающих слать флаг, например isFancy. Переопределить render в родительском контроллере, который будет проверять этот флаг и делать нужный рендер.
Вообще самое просто решение - отказаться от полностью ajax'овый формы. Открылось окошко формы, заполнили её, засабмитили. Если всё ок - то хорошо, делаем что нам надо. Если возникли ошибки валидации - открываем эту форму отдельно и полноценно. Пример можно увидеть тут: http://re.monoray.ru/ - в верхней менюшке ссылка "Оставить заявку".
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Re: Динамичный ajax
Эти вопросы возникают не только у меня, но и у многих. Поэтому я и просил Гуру написать, как это реализовать при помощи фреймворка правильно. Я со всем этим справился (кроме двойного submit-а).
2.) проблема в yiiactiveform.js и об этом писали не только на этом форуме (без влезания во фреймворк, решений я не нашел).
3.) прописал ручками в шаблоне. В конфигах запретил загрузку.
P.S. по поводу Вашего решения, не вижу в этой реализации ничего хорошего. Я уже подгрузил форму. Зачем мне ее еще раз грузить, да еще и с редиректом?
2.) проблема в yiiactiveform.js и об этом писали не только на этом форуме (без влезания во фреймворк, решений я не нашел).
3.) прописал ручками в шаблоне. В конфигах запретил загрузку.
P.S. по поводу Вашего решения, не вижу в этой реализации ничего хорошего. Я уже подгрузил форму. Зачем мне ее еще раз грузить, да еще и с редиректом?
В сознании новичка много возможностей, в сознании эксперта — лишь несколько.
Re: Динамичный ajax
Минусы есть, не спорю. Но в плюсах:MOTORIST писал(а):P.S. по поводу Вашего решения, не вижу в этой реализации ничего хорошего. Я уже подгрузил форму. Зачем мне ее еще раз грузить, да еще и с редиректом?
1. Очень легко и быстро реализуется "из коробки";
2. Много раз сталкивался с проблемами в таких формах для всяких хитрых полей (например, разные наборы полей в разных табах, загрузка файлов). С файлами вообще отдельная тема - при неудачной валидации формы, по идее, файлы должны всёравно быть загружены и это должно отразиться в форме (с возможностью удалить эти файлы). Думаю, не мне вам рассказывать, какой это всё гемор при "чистой" ajax-валидации;
3. Standalone форма индексируется поисковиком и доступна по прямому урлу в полноценном дизайне сайта;
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Re: Динамичный ajax
Присоединяюсь к вопросу MOTORIST.Koduc писал(а):Минусы есть, не спорю. Но в плюсах:MOTORIST писал(а):P.S. по поводу Вашего решения, не вижу в этой реализации ничего хорошего. Я уже подгрузил форму. Зачем мне ее еще раз грузить, да еще и с редиректом?
3. Standalone форма индексируется поисковиком и доступна по прямому урлу в полноценном дизайне сайта;
Для форм авторизации, регистрации, восстановления пароля индексация не нужна, поля простые и именно для таких простых форм интересует грамотная реализация без сопутствующих проблем описанных автором топика.
Безусловно в сложных формах чистая ajax валидация может принести немало головной боли разработчику...
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: Динамичный ajax
Двойной сабмит может быть из-за того CActiveForm при саюмите повторно валидирует форму. То есть не совсем двойной сабмит. У себя подобных проблем не наблюдал. Разве что с дублированием скриптов по аякс.