dvizh / yii2-shop

Admin panel for a shop based on Yii2
Apache License 2.0
32 stars 20 forks source link

dvizh\cart\widgets\ChangeOptions логика работы #5

Closed gitrequests closed 7 years ago

gitrequests commented 7 years ago

Фильтрация работает отлично, но какой-то странный алгоритм поведения у виджета... А конкретно dvizh\cart\widgets\ChangeOptions

Разберем пример тестового сайта http://demo4.dvizh.net/site/index

В Админке для товара "Куртка мужская" выбран черный цвет и Размер одежды - XXL и M. Но виджет на фронте нам позволяет выбрать любой цвет и размер и положить товар в корзину, хотя по всей логике, если в админке указано, что такой модели нет в наличии (чекбокс не выбран), то на фронте они должны быть скрыты и в карточке товара для выбора...

Другая проблема - это фильтрация по характерирстикам товаров. Задумка, на сколько я понял такая, что для характеристик вы используете "Дополнительные поля" и за их рендеринг отвечает dvizh\field\widgets\Show... Но как фильтровать доп.поля? Для примера возьмем раздел мобильных телефонов. Допустим мы заполняем в Админке карточку товара и возьмем, например, тип дисплея IPS... Как его оформить? Если с помощью "Доп. полей" то мы не сможем фильтровать в разделе по данному параметру. Если оформим как "Фильтр", то при заказе клиент будет видеть и все остальные параметры для этого поля (ну например AMOLED), хотя такой модели не существует с этим типом дисплеев...

pistol88 commented 7 years ago

1) Проблема с выбором опций. Занимается отдельный человек, все еще ждем от него ПР, сейчас вернется в офис - я его пну. ChangeOption работает с фильтрами в данный момент, а должен с модификациями. При выборе нужной комбинации, будет происходить поиск модификации, привязанной к этой комбинации.

2) В будущем все фильтры будут разделены на "фильтр" и "опция". Завтра отрефакторю этот момент.

gitrequests commented 7 years ago

Удачи Вам в работе! Очень полезные и грамотно построенные модули. Буду ждать обновления.

pistol88 commented 7 years ago

Фильтры и опции разделены. Логика работы виджетов доработана, теперь: 1) В вариантах выбора опций присутствуют только те варианты, которые потенциально есть в наличии при какой-либо комбинации; 2) При выборе любой комбинации опций, происходит Ajax запрос на эктион поиска модификации по значению опций; 3) Если модификация найдена, цена в ShowPrice перерисовывается. Если не найдена, выскакивает сообщение о том, что модификации нет в наличии и цена откатывается на базовую стоимость продукта.

Остается недоработано: 1) Логика поведения, когда модификации по выбранным опциям нет в наличии. Сейчас просто алерт выскакивает. Скорее всего, сделаю зависимые селекты на Ajax; 2) Корректное построение страницы отображения заказа, собранного по опциям Сейчас модуль заказа не знает ничего о модификации, только об опциях; 3) Логика списания, нужно продумать; 4) Не самая изящная реализация всего механизма, требуется рефакторинг; 5) Необходимо доработать логику работы виджета ChangeOptions, когда он вызывается уже в корзине. Сейчас, скорее всего, некорректно работает.