Как обновить корзину после добавления товара через событие?
Подписываюсь на событие корзины OnBasketAdd, при определенном условии добавляю товар через Bitrix\Catalog\Product\Basket::addProduct, как сделать так, чтобы добавленный товар был виден в корзине сразу же, а не только после перезагрузки страницы
а OnBasketAdd почему срабатывает? Посетитель что-то добавляет в корзину? Если да - посмотрите отладкой весь код от начала обработки запроса посетителя до выдачи ему результата. Где-то там должен найтись ответ.
Михаил Ливач, идея в том, чтобы при добавлении товаров, смотреть на общий вес корзины и если он больше или равен нужному добавлять еще один товар в корзину, товар без проблем добавляется при соблюдении условия, но его видно только после перезагрузки страницы, то есть корзина не перерисовывается при добавлении новой позиции
Алексей, а почему она должна перерисовываться? Страница у клиента, а добавляете товар Вы на бэкенде. Если Вы ожидали, что в Битриксе есть какая-то реактивность - ничего подобного.
И даже если есть взаимодействие через ajax ( что я пытаюсь у Вас выяснить, но тщетно), то оно, я полагаю, происходит так:
посетитель нажал "добавить товар"
ajax запрос ушёл,
бэкенд загрузил корзину этого посетителя,
добавил товар - ошибок не произошло,
отправил новую корзину посетителю.
Вам бы надо, чтобы перед последним шагом происходило повторная загрузка корзины - но, полагаю, её нет.
Самое простое костыльное решение - в ajax-обработчике посылать второй запрос чисто с получением корзины. Есть ли вариант получше - только отладка покажет.