Хотелось бы обсудить этот вопрос теоретически и практически...
Как видится:
1. Нужно показать все товары в заказе(1 шаг). Пользователь может посмотреть что он выбрал, поиграться с числом товаров, удалить товары или очистить корзину совсем.
2. Выбор способа доставки и пересчет суммы за заказ(шаг 2).
3. Ввод адреса(шаг 3)
4. Подтверждение заказа капчей(шаг 4)
Стоит ли делать для этого одну форму со сценариями на каждый шаг? Или разбить на несколько независимых форм?
Понятно, что восстанавливать данные предыдущего шага нужно будет из сессии, что легче сделать в одной форме-модели. Как написать конструктор с параметрами в юии2. Какие еще варианты реализации оформления заказа?
Оформление заказа. Форма в несколько шагов.
Re: Оформление заказа. Форма в несколько шагов.
Создайте компонент Cart, в котором будут методы типа addItem, removeItem, getCount, getSum, removeItemById, getItemsFromSession итд. Работайте только с ней - никаких прямых вмешательств в формах. Это важно.
А форм я бы сделал несколько, хотя не думаю, что это критично.
А форм я бы сделал несколько, хотя не думаю, что это критично.
Re: Оформление заказа. Форма в несколько шагов.
Форма в несколько шагов - называется wizard form.
Погуглите wizard form yii2, есть готовые решения.
Погуглите wizard form yii2, есть готовые решения.
Re: Оформление заказа. Форма в несколько шагов.
Вопрос не в визард форм а скорее в ее преимуществах и недостатках. Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"? Вот исходя их этого я и предполагал использование одной формы.
Re: Оформление заказа. Форма в несколько шагов.
это разные вещи. Компонент - единая точка сбора информации о заказе, ее составляющих итд.andreyrud писал(а):Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"?
Re: Оформление заказа. Форма в несколько шагов.
А контроллер, контроллер что делает? Ведь логика обработки форм как раз возложена на контроллер, а данные на модели. Компонент удобен, но не будет ли оверхедом?zelenin писал(а):это разные вещи. Компонент - единая точка сбора информации о заказе, ее составляющих итд.andreyrud писал(а):Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"?
Зы: Конструктор с параметрами в Yii2 как?
Re: Оформление заказа. Форма в несколько шагов.
В контроллере обрабатывать входные данные и передавать их на валидацию и/или дальнейшие действия в модельandreyrud писал(а):А контроллер, контроллер что делает? Ведь логика обработки форм как раз возложена на контроллер, а данные на модели. Компонент удобен, но не будет ли оверхедом?zelenin писал(а):это разные вещи. Компонент - единая точка сбора информации о заказе, ее составляющих итд.andreyrud писал(а):Отдельный компонент - хорошее решение, но как быть с "вся логика должна быть в моделях"?
Зы: Конструктор с параметрами в Yii2 как?
Re: Оформление заказа. Форма в несколько шагов.
берет данные из реквеста и передает в бизнес-слой.andreyrud писал(а):А контроллер, контроллер что делает?
а как вы собираетесь с помощью модели считать сумму заказа, кол-во разных товаров (других моделей), сохранять в сессию, оттуда ее вытаскивать?andreyrud писал(а):Ведь логика обработки форм как раз возложена на контроллер, а данные на модели. Компонент удобен, но не будет ли оверхедом?
Вот в yii2.1 собираются для Role/Permission добавить AR-модели. По вашей логике PhpManager/Dbmanager и прочее от них зависимое больше не нужно будет.