Не зарегистрирован
Вход
Забыли пароль?
Регистрация
Подписаться
Сэкономьте время — перед вопросом на форуме узнайте, как найти ответ быстрее
По техническим проблемам необходимо обращаться в Консультационный центр

Поиск по форуму: 

Приглашаем в блог Amiro.CMS. Регулярные обзоры, опыт, решения, практикумы.

Форум  ->   Разработка плагинов, вопросы по API  ->  Работа с корзиной через API

Раздел для разработчиков. Обсуждение создания плагинов, вопросы и пожелания по API Amiro.CMS

Добавлено: 08.07.15 07:33:25 #1



Регистрация: 29.06.09
Сообщений: 11


Обратиться по имени

Доброго дня.
У меня стоит задача: подменить некоторые данные у одного из товаров корзины (изменить стоимость его доставки).
Делаю я это в обработчике события "v5_on_apply_data" и в типе "eshop_cart_calc_item".
Но чтобы мне выбрать этот товар, я сначала просматриваю всю корзину через API вызов:
$oEshopCart = AMI::getResource('eshop/cart');
$oCartItems = $oEshopCart->getItems();
foreach($oCartItems as $oCartItem) {
     // тут я делаю свои действия, и запоминаю порядковый номер нужного мне товара
    // допустим, пусть это будет второй товар 
}


Далее, в вышеуказанном обработчике ("eshop_cart_calc_item", я у второго товара меняю то что мне надо.

Проблема в том, что порядок товаров, который идет в вызове через API, и порядок товаров, который идет в обработчике - он отличается.

Вот для примера, если взять демо сайт и добавить в корзину первом случае сначала "Бинокль", а потом "Большой набор для рукоделия".
А во втором случае добавить сначала "Большой набор для рукоделия", а потом "Бинокль", то получается, что в одном случае порядок совпадает, а в другом не совпадает.

И вот не совсем понятно, как мне определить нужный мне товар. Я же не могу просто завязаться на ID товара. Потому что в корзине там еще есть и номер цены, и id подвида.

Если бы порядок следования товаров совпадал, то проблемы бы не было.
Ну или если бы скажем, был какой-то "сборный id", который бы был и в обработчике, и который можно было бы получить у товара корзины при работе через API. То по ним бы я тоже мог бы найти нужный мне товар.

Есть мысли, как решить задачу?



Добавлено: 08.07.15 07:49:30 #2



Регистрация: 29.06.09
Сообщений: 11


Обратиться по имени

Я пока вижу только одно решение - собрать этот комбинированный id самому.
Например
$fullId = $oCartItem->getItemId() . '_' . $oCartItem->getPriceNum() . '_' . $oCartItem->getPropId ();

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



Добавлено: 08.07.15 08:42:53 #3



Регистрация: 29.06.09
Сообщений: 11


Обратиться по имени

Alex ey Kar ov:
Я пока вижу только одно решение - собрать этот комбинированный id самому.
Например
$fullId = $oCartItem->getItemId() . '_' . $oCartItem->getPriceNum() . '_' . $oCartItem->getPropId ();

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


Сделал пока так. Вроде работает. Цена на сайте одна, поэтому исключил ее пока из связки.



Добавлено: 08.07.15 08:45:40 #4

Амиро



Регистрация: 21.03.07
Сообщений: 258


Обратиться по имени

Да, такой "Id" будет уникальным в контексте корзины.





Создать новую тему

Всего тем: 6630
Всего сообщений: 27746
Всего зарегистрированных пользователей: 48912
Последний зарегистрированный пользователь: user33269596