Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Доброго времени суток, прошу помощи зала
Задача:
Реализовать возможность заполнения он-лайн анкеты. Анкета состоит из 10 блоков. Пользователь заполняет блок данных, нажимает кнопку Далее, система проверяет заполненные данные на ошибки, если ошибок нет, открывает следующий блок для заполнения. У пользователя есть возможность вернутся к предыдущему блоку и откорректировать ранее внесенную информацию. В БД информация сохраняется после заполнения всех блоков. В большенстве блоков есть выпадающие списки, их много, списки в пределах блока могут быть зависимы друг от друга.
Никак не могу сообразить как это правильно сделать, у меня два варианта, но правильные ли они...
Вариант 1. Делать один большой шаблон с кучей div-ов, переключение на следующий и предыдущий блок с помощью jQuery, загрузка выпадающих списков аяксом. В конце собираем всю информацию и сохраняем в БД. Получается очень много jQuery.
Вариант 2 Делать каждый блок как отдельную страницу. При переходе на следующий блок, бежим в контролер проверяем на ошибки и грузим следующую страницу, но при этом полученные данные надо куда-то сохранить( может глобальные переменные??), ведь пользователь всегда может вернутся к предыдущему блоку и просмотреть, что заполнил. В конце взять данные из это-го чего-то глобального и сохранить в БД.
Какой из вариантов более правильный или оба в корне не верны. Может кто-то делал аналогичною задачу, поделитесь опытом, а то никак не могу определится как будет лучше.
Не в сети
Не в сети
первый вариант проще технически, если отказаться от "загрузки следеющего блока аяксом", а сразу сделать одну форму с полным набором полей. javascript просим открывать поочередно по одному fieldset:
https://github.com/artoodetoo/formToWizard
ПМСМ, это концептуально тоже вернее. весь набор входящих данных является связанным единым целым. можно прогать классы реквеста и контроллера в единственном числе.
последовательная подача порциями это задача представления и может быть реорганизована без неоходимости править что-то в контроллере.
Изменено artoodetoo (17.05.2018 21:17:11)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1