Как организовать динамический wizard (мастер установки) на сайте?

Здравствуйте, делаю онлайн генератор(предметная область неважна). Суть в том что пользователю нужно заполнить очень большое количество полей формы(в основном чекбоксы, радиокнопки, бегунки, ну и немного текстовых полей), причем последующие поля формы необходимо строить в зависимости от выбора пользователя на предыдущем этапе. То есть отметил галочку, что ему нужен будет один элемент - значит в следующий шаг включаем настройки этого элемента и т.д. Из за этого было принято решение не выводить всю форму целиком. Вариант с постепенным добавлением параметров как здесь тоже не подходит: www.mitsubishi-motors.ru/for-byers/construct

На данный момент вижу такое решение:
Загружаем первую форму вместе с сайтом. Затем при нажатии на кнопку далее, сохраняем полученные значения(в сесиию или cookies), и подгружаем аяксом следующий этап(в виде tpl шаблона?), в зависимости от выбранных ранее значений.

Не уверен что решение правильное и "элегантное". Так же был вариант грузить всю форму целиком сразу, а при нажатии на кнопку далее, просто скрывать/отображать нужные элементы, создавая тем самым видимость динамичного веб приложения.

Буду благодарен как решениям пролемы, так и просто замечаниям и комментариям!
  • Вопрос задан
  • 2986 просмотров
Решения вопроса 1
@Quilin
Full-stack разработчик
По сути своей, мастер - это очень здоровая форма. А есть одна штука, которую люди жутко ненавидят в больших формах - когда введенные ими данные оттуда пропадают. Случайно закрыл вкладку или еще что-то такое. У меня в проекте есть два мастера - мастер оплаты и мастер создания одного ключевого бизнес-объекта. В первом случае очень важно сохранить все данные на всех шагах, чтобы потом позволить пользователю вернуться и завершить оплату, во втором случае это не так критично.
Поэтому мастер оплаты работает аж с базой данных, стараясь по максимуму запомнить, что вводит пользователь, а второй мастер работает как одна большая форма. Впрочем, он общается с сервером, который подкладывает следующие шаги через ajax, если заполнение текущего как-то на это способно повлиять.

Я все это к тому, что надо исходить не из общей практики и представлений об удобстве написания кода - а из конкретных особенностей вашего мастера: требований к безопасности, отказоустойчивости и прочих факторов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
p00h
@p00h
Фехтовальщик-стропальщик
По-моему, вариант с "формой целиком" самый правильный. Сервер не должен принимать промежуточное участие в этом процессе. Валидация конечной формы - непременно, ибо нельзя доверять тому, что идет от клиента. А весь остальной процесс, на мой взгляд, непременно делать на клиенте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы