Документация для разработчиков
Темная тема

События, связанные с изменением записей в корзине

Примечание: перечисленные ниже события устарели с версии 15.5.0, но в продукте сохранена обратная совместимость. Поэтому их можно использовать, если в настройках модуля Интернет-магазин отмечена опция Включить обработку устаревших событий. Либо вы можете использовать события нового ядра.

Событие Описание и параметры МетодС версииДо версии
OnBeforeBasketAdd Вызывается перед добавлением записи в корзину, может быть использовано для отмены или модификации данных.
Параметры
&arFields Массив полей записи корзины

Если добавление товара в корзину выполняется методом Add2BasketByProductID, то через него нельзя изменить название товара. Для этого добавляйте товар в корзину через CSaleBasket::Add.

Add8.0.3 15.5.0
OnBasketAdd Вызывается после добавления записи в корзину.
Параметры
ID Идентификатор добавленной записи
arFields Массив полей записи корзины
Add8.0.3 15.5.0
OnBeforeBasketUpdate Вызывается перед изменением записи в корзине, может быть использовано для отмены или модификации данных.
Параметры
ID Идентификатор записи в корзине
&arFields Массив полей записи корзины
Update8.0.3 15.5.0
OnBasketUpdate Вызывается после изменения записи в корзине.
Параметры
ID Идентификатор записи в корзине
arFields Массив полей записи корзины
CSaleBasket::_Update 8.0.315.5.0
OnBeforeBasketUpdateAfterCheck Вызывается перед изменением корзины после проверки массива $arFields.
Параметры
ID Код записи товара в корзине
arFields Массив новых параметров элемента корзины
CSaleBasket::_Update 11.5.015.5.0
OnBeforeBasketDelete Вызывается перед удалением записи из корзины, может быть использовано для отмены.
Параметры
ID Идентификатор записи в корзине
Delete8.0.315.5.0
OnBasketDelete Вызывается после удаления записи из корзины
Параметры
ID Идентификатор записи в корзине
Delete 8.0.315.5.0
OnSetCouponList Добавляет переданные купоны. Событие является системным.

Параметры
intUserID Идентификатор пользователя, для которого передаются купоны.
arCoupons Один купон или массив передаваемых купонов.
arModules Массив идентификаторов модулей, которые должны принять список купонов. Если массив пустой, то обработчик события должен обработать все модули, которые имеют обработчик этого события.
CSaleBasket::DoSaveOrderBasket11.5.015.5.0
OnClearCouponList Удаляет из списка переданные купоны. Событие является системным.

Параметры
intUserID Идентификатор пользователя, для которого передаются купоны.
arCoupons Один купон или массив передаваемых купонов.
arModules Массив идентификаторов модулей, которые должны удалить из списка переданные купоны. Если массив пустой, то обработчик события должен обработать все модули, которые имеют обработчик этого события.
CSaleBasket::DoSaveOrderBasket 11.5.015.5.0
OnDeleteCouponList Полностью удаляет список купонов. Событие является системным.

Параметры
intUserID Идентификатор пользователя, для которого удаляются купоны.
arModules Массив идентификаторов модулей, из которых удаляется список купонов. Если массив пустой, то обработчик события должен обработать все модули, которые имеют обработчик этого события.
CSaleBasket::DoSaveOrderBasket11.5.0 15.5.0


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Александр Жирков
OnBeforeBasketDelete не работает даже при установленной галочке Включить обработку устаревших событий, т.к. для работы с корзиной вообще другой класс используется (сейчас речь о стандартном компоненте sale.basket.basket).
Про аналогичное событие в d7 OnBeforeSaleBasketItemEntityDeleted в документации как обычно не упомянуто.
На всякий случай пример использования:
Код
Main\EventManager::getInstance()->addEventHandler(
    'sale',
    'OnBeforeSaleBasketItemEntityDeleted',
    'OnBeforeSaleBasketItemEntityDeletedHandler'
);
function OnBeforeSaleBasketItemEntityDeletedHandler(Main\Event $event) {
    return new Main\EventResult(
        Main\EventResult::ERROR,
        new \Bitrix\Sale\ResultError('Нельзя удалить этот товар', 'ANY_ERROR_CODE'),
        'sale'
    );
}
0
Андрей Чурсин
Сообщение непромодерировано, возможны ошибки и неточности.
В новом ядре я что-то не нашёл аналогов событий OnBeforeBasketAdd, OnBasketUpdate, OnBasketDelete !

А новые события отрабатывают не очень очевидно:
OnSaleBasketItemEntitySaved - срабатывает только на изменение элемента корзины (вроде аналог OnBasketUpdate)
OnSaleBasketItemEntityDeleted - срабатывает при удалении элемента (аналог OnBasketDelete? )
onSaleBasketItemRefreshData - срабатывает на каждый элемент корзины
© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх