Как пошагово заполнять модель? Т.е. на одной странице заполняем одну часть аттрибутов, на другой - другую.
Точнее, вопрос в следующем: Где ее сохранять? В сессии не получается - после этого почему-то не действуют правила валидации. Думаю с сериализацией в файл будет тот же эффект.
У кого какие мысли?
Пошаговое заполнение модели
Re: Пошаговое заполнение модели
Мысль, посмотри на это расширение. Делает как раз то, что тебе нужно.
http://www.yiiframework.com/extension/wizard-behavior/
А вообще, видимо где-то у тебя ошибка в логике. Я делал подобный функционал, и промежуточные данные хранил в сессии. Валидация проходила нормально.
http://www.yiiframework.com/extension/wizard-behavior/
А вообще, видимо где-то у тебя ошибка в логике. Я делал подобный функционал, и промежуточные данные хранил в сессии. Валидация проходила нормально.
Re: Пошаговое заполнение модели
Хм. А в чём собственно проблема? Или сохранение нужно без submit`а формы?.. Если нужно с сабмитом то запросто можно сохранить в БД частично заполненную модель и добавляем флаг is_finalized при отсутствии которого форма не считается полностью заполненной. Примерный алгоритм:
1) Заполняем форму на одной странице.
2) После сабмита переходим на другую страницу, заполняем из сохранённых данных поля формы и продолжаем заполнение.
3) Сабмитим следующую часть и устанавливаем флаг заполнения в позицию true.
Можно в принципе и без флага, тогда просто уставнавливаем обязательные поля и в случае их отсутствия считаем не действительным заполненность формы.
Ещё как вариант загружаем всю форму сразу и при помощи JS скрываем часть. Как только нам нужно перейти к следующему этапу, делаем проверку полей ajax`ом и начинаем заполнение остальной формы.
ЗЫ: Расширение не смотрел, так что может там что то более удачное)
1) Заполняем форму на одной странице.
2) После сабмита переходим на другую страницу, заполняем из сохранённых данных поля формы и продолжаем заполнение.
3) Сабмитим следующую часть и устанавливаем флаг заполнения в позицию true.
Можно в принципе и без флага, тогда просто уставнавливаем обязательные поля и в случае их отсутствия считаем не действительным заполненность формы.
Ещё как вариант загружаем всю форму сразу и при помощи JS скрываем часть. Как только нам нужно перейти к следующему этапу, делаем проверку полей ajax`ом и начинаем заполнение остальной формы.
ЗЫ: Расширение не смотрел, так что может там что то более удачное)
Re: Пошаговое заполнение модели
Плохая практика, держать в базе невалидные/неполные данные. Ибо нам потом надо будет регулярно искать и удалять эти данные. В то время, как хранение модели в сессии всех этих недостатков лишено.Loki писал(а):Если нужно с сабмитом то запросто можно сохранить в БД частично заполненную модель и добавляем флаг is_finalized при отсутствии которого форма не считается полностью заполненной.
Можно в принципе и без флага, тогда просто уставнавливаем обязательные поля и в случае их отсутствия считаем не действительным заполненность формы.
Re: Пошаговое заполнение модели
Не спорю, но это лишь один из вариантов решения предложенных мной) Хранение в сессии удобнее, особенно если правильно настроить сценарии для валидации)Плохая практика, держать в базе невалидные/неполные данные. Ибо нам потом надо будет регулярно искать и удалять эти данные. В то время, как хранение модели в сессии всех этих недостатков лишено.
Re: Пошаговое заполнение модели
Спасибо большое за ссылку - перерыл все extentions и, видно, не заметил.byteasdf писал(а):Мысль, посмотри на это расширение. Делает как раз то, что тебе нужно.
http://www.yiiframework.com/extension/wizard-behavior/
А вообще, видимо где-то у тебя ошибка в логике. Я делал подобный функционал, и промежуточные данные хранил в сессии. Валидация проходила нормально.
У меня особая модель, ее нельзя сохранять несколько раз )Loki писал(а):Хм. А в чём собственно проблема? Или сохранение нужно без submit`а формы?.. Если нужно с сабмитом то запросто можно сохранить в БД частично заполненную модель и добавляем флаг is_finalized при отсутствии которого форма не считается полностью заполненной. Примерный алгоритм:
1) Заполняем форму на одной странице.
2) После сабмита переходим на другую страницу, заполняем из сохранённых данных поля формы и продолжаем заполнение.
3) Сабмитим следующую часть и устанавливаем флаг заполнения в позицию true.
Можно в принципе и без флага, тогда просто уставнавливаем обязательные поля и в случае их отсутствия считаем не действительным заполненность формы.
Ещё как вариант загружаем всю форму сразу и при помощи JS скрываем часть. Как только нам нужно перейти к следующему этапу, делаем проверку полей ajax`ом и начинаем заполнение остальной формы.
ЗЫ: Расширение не смотрел, так что может там что то более удачное)