Форма регистрации в несколько шагов => Несколько запросов? (Laravel)
Я строю многоэтапную регистрационную форму. Я только позволю пользователю перейти к следующему шагу, когда текущий шаг будет полностью подтвержден. Я также буду хранить всю информацию в session
и когда у меня будет все, я сохраню это в базе данных.
Мои шаги будут включать в себя различные поля, такие как: пользовательские данные с адресом, бизнес-данные, которые также будут иметь адресные поля, а затем несколько других полей. Однако некоторые пользователи должны будут заполнить адрес, в то время как другие не потребуются.
- UserDetailsRequest (без учета адресов)
- BusinessDetailsRequest (без учета адресов)
- AddressRequest
- ExtraFieldsRequest
ИЛИ ЖЕ
- UserDetailsRequest (с адресами)
- BusinessDetailsRequest (с адресами)
- ExtraFieldsRequest
Могу ли я объединить запросы в моем контроллере в зависимости от типа пользователя и если они необходимы для предоставления адреса?
В общем, нужно ли создавать столько запросов, сколько у меня есть форм в моем проекте? Могу ли я вместо этого создать "больший" запрос формы и добавить в него некоторую логику?
1 ответ
Начальный совет: во-первых, если адреса относятся к двум отдельным объектам, я бы не стал разделять все для создания третьего шага мастера "Адреса". Это может привести к путанице с точки зрения пользовательского опыта. Вместо этого я предпочел бы второе решение, которое вы предложили, с тремя шагами.
Теперь о мастере и хранении данных. Конечно, вы можете сделать это разными способами. Очевидно, что вы можете использовать сеансы, но если вы не знаете, как ваше приложение будет масштабироваться в будущем, вы можете столкнуться с некоторыми проблемами. Я бы сделал что-то другое.
Как это:
- используйте некоторую библиотеку или фреймворк (jQuery, Angular, оба, на ваше усмотрение), чтобы создать одностраничное приложение для вашего мастера. Это будет чище, а также более удобно, если ваш пользователь захочет вернуться, отредактировать что-то и так далее;
- создайте объект javascript со всеми необходимыми данными, а затем отправьте их контроллеру, где они будут проверены, проверены и затем обработаны. Очевидно, вы будете создавать классы соответственно;
Я не люблю использовать сессии. Если я могу не использовать их, я всегда наслаждаюсь этим в долгосрочной перспективе.