После удаления товара через API корзине не обновляется

Добрый день.
Объясню сначала задачу:
1. При заказе товара с определенного раздела, в корзину нужно добавить товар с определенным ID (товар-доставка)
2. Также все должно корректно работать при обновлении корзины и удалении товаров из корзины (если в корзине не осталось товаров с данного раздела, то и доставку нужно убирать)
Но почему-то у меня доставка удаляется но висит в корзине до перезагрузки страницы.

Вот мой стремный код если есть решение изящнее то буду очень благодарен. По сути — нужно установить определенную сумму доставки при наличии в корзине товаров из определенного раздела (категории)

<?php
switch ($modx->event->name) {
	case 'msOnBeforeAddToCart':
		$delivery = 0;
		$parent = $product->get('parent');
		if ($parent == 49 || $parent == 51 || $parent == 52 || $parent == 53 || $parent == 54 || $parent == 55 || $parent == 56) {
			foreach($cart->get() as $key => $value){
				if ($value['id'] == 460) {
					$delivery++;
				}
			}
			if ($delivery == 0) {
				$cart->add(460);
			}
		}
	
	break;
	case 'msOnChangeInCart':
	case 'msOnRemoveFromCart':
		$delivery = 0;
		$parent = 0;
		foreach($cart->get() as $key => $value){
			if ($value['id'] == 460) {
				$delivery++;
				$keys = $key;
			}
			if ($product = $modx->getObject('msProduct', $value['id'])) {
				$pparent = $product->get('parent');
				if ($pparent == 49 || $pparent == 51 || $pparent == 52 || $pparent == 53 || $pparent == 54 || $pparent == 55 || $pparent == 56) {
					$parent++;
				}
			}
		}
		if ($delivery == 0 && $parent != 0) {
			$cart->add(460);
		}
		else if ($delivery == 1 && $parent == 0) {
			$cart->remove($keys);
		}
	
	break;

}
Андрей
11 июня 2019, 20:51
63
0

Комментарии: 4

Андрей
13 июня 2019, 10:00
0
Помогииите)
    Евгений Шеронов
    13 июня 2019, 10:39
    0
    Корзина не перерисовывается автоматически.

    А текущий товар удаляется оттуда с помощью JS. Теоретически, там можно попробовать подцепиться к доп товарам, по каким-нибудь data-атрибутам и тоже их удалить из вёрстки.

    Но вообще можноо смотреть и в эту сторону полного ajax обновления содержимого: modx.pro/solutions/3942
      Андрей
      13 июня 2019, 11:01
      0
      А коллбеки тут не помогут?
      Например такой:
      miniShop2.Callbacks.add('Cart.remove.response.success', 'remove_cart', function(e) {
              console.log(response);
              // Здесь логика
          });
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.