Оформление заказа. Форма в несколько шагов.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

Оформление заказа. Форма в несколько шагов.

Сообщение andreyrud »

Хотелось бы обсудить этот вопрос теоретически и практически...

Как видится:
1. Нужно показать все товары в заказе(1 шаг). Пользователь может посмотреть что он выбрал, поиграться с числом товаров, удалить товары или очистить корзину совсем.
2. Выбор способа доставки и пересчет суммы за заказ(шаг 2).
3. Ввод адреса(шаг 3)
4. Подтверждение заказа капчей(шаг 4)

Стоит ли делать для этого одну форму со сценариями на каждый шаг? Или разбить на несколько независимых форм?
Понятно, что восстанавливать данные предыдущего шага нужно будет из сессии, что легче сделать в одной форме-модели. Как написать конструктор с параметрами в юии2. Какие еще варианты реализации оформления заказа?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Оформление заказа. Форма в несколько шагов.

Сообщение zelenin »

Создайте компонент Cart, в котором будут методы типа addItem, removeItem, getCount, getSum, removeItemById, getItemsFromSession итд. Работайте только с ней - никаких прямых вмешательств в формах. Это важно.
А форм я бы сделал несколько, хотя не думаю, что это критично.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Оформление заказа. Форма в несколько шагов.

Сообщение yiijeka »

Форма в несколько шагов - называется wizard form.

Погуглите wizard form yii2, есть готовые решения.
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

Re: Оформление заказа. Форма в несколько шагов.

Сообщение andreyrud »

Вопрос не в визард форм а скорее в ее преимуществах и недостатках. Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"? Вот исходя их этого я и предполагал использование одной формы.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Оформление заказа. Форма в несколько шагов.

Сообщение zelenin »

andreyrud писал(а):Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"?
это разные вещи. Компонент - единая точка сбора информации о заказе, ее составляющих итд.
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

Re: Оформление заказа. Форма в несколько шагов.

Сообщение andreyrud »

zelenin писал(а):
andreyrud писал(а):Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"?
это разные вещи. Компонент - единая точка сбора информации о заказе, ее составляющих итд.
А контроллер, контроллер что делает? Ведь логика обработки форм как раз возложена на контроллер, а данные на модели. Компонент удобен, но не будет ли оверхедом?

Зы: Конструктор с параметрами в Yii2 как?
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Оформление заказа. Форма в несколько шагов.

Сообщение Onotole »

andreyrud писал(а):
zelenin писал(а):
andreyrud писал(а):Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"?
это разные вещи. Компонент - единая точка сбора информации о заказе, ее составляющих итд.
А контроллер, контроллер что делает? Ведь логика обработки форм как раз возложена на контроллер, а данные на модели. Компонент удобен, но не будет ли оверхедом?

Зы: Конструктор с параметрами в Yii2 как?
В контроллере обрабатывать входные данные и передавать их на валидацию и/или дальнейшие действия в модель
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Оформление заказа. Форма в несколько шагов.

Сообщение zelenin »

andreyrud писал(а):А контроллер, контроллер что делает?
берет данные из реквеста и передает в бизнес-слой.
andreyrud писал(а):Ведь логика обработки форм как раз возложена на контроллер, а данные на модели. Компонент удобен, но не будет ли оверхедом?
а как вы собираетесь с помощью модели считать сумму заказа, кол-во разных товаров (других моделей), сохранять в сессию, оттуда ее вытаскивать?
Вот в yii2.1 собираются для Role/Permission добавить AR-модели. По вашей логике PhpManager/Dbmanager и прочее от них зависимое больше не нужно будет.
Ответить