miniShop2 icon indicating copy to clipboard operation
miniShop2 copied to clipboard

Добавление возможности изменять опции товара в корзине

Open tanzirev opened this issue 3 years ago • 4 comments

Что оно делает?

Даёт возможность менять опции у товара который уже добавлен в корзину

Зачем это нужно?

Нужно для того, чтобы не приходилось сначала удалять товар из корзины, затем по новой его добавлять с новой опцией.

tanzirev avatar Sep 16 '20 11:09 tanzirev

Добрый вечер. Я тут накатил этот PR, вроде ничего не сломалось, но осталось непонятно в каком виде это можно протестировать? Не могли бы вы дополнить описание примером чанка или хотя бы скриншотом как это всё должно выглядеть на фронте для пользователя?

webinmd avatar Sep 30 '20 19:09 webinmd

Добрый вечер. Я тут накатил этот PR, вроде ничего не сломалось, но осталось непонятно в каком виде это можно протестировать? Не могли бы вы дополнить описание примером чанка или хотя бы скриншотом как это всё должно выглядеть на фронте для пользователя?

@tanzirev

Ibochkarev avatar Dec 26 '20 08:12 Ibochkarev

https://modx.pro/components/21405#comment-126848

Ibochkarev avatar Feb 13 '21 04:02 Ibochkarev

Кароч, протестировал, есть нюансы. Тест 1:

  1. Добавить товар с опцией в корзину
  2. В корзине меняем опцию. Опция меняется. Но если у вас где-то ещё идёт вывод опции, то она визуально изменится после обновления страницы. В заказ же падает изменённая опция

Тест 2 (на примере размеров - M,XL, XXL):

  1. Добавить товар с опцией в корзину - XL
  2. Изменить опцию в корзине - меняем на XXL
  3. Вернуться в товар, выбрать XXL и добавить в корзину - по итогу в корзине 2 товара с одинаковыми опциями.
  4. Вернуться в корзину, выбрать первую опцию - XL
  5. При добавлении в корзину получаем баг, изменяется количество товара из первого шага, который мы поменяли на XXL в шаге 2. (Кто запутался - перечитайте еще раз)

По итогу функционал сыроват, я бы не рекомендовал в таком виде принимать PR.

Почему такой баг? А потому что ключ товара в корзине формируется исходя из значений опций. $key = md5($id . $price . $weight . (json_encode($options)));

Вот тут вот

webinmd avatar Feb 20 '21 21:02 webinmd