Робота з кошиком в бітрікс d7

Починаючи з 16 версії використовується нова версія ядра магазину Бітрікс, що є частиною ядра Бітрікс D7. Але деякі класи і методи доступні і в 15 версії магазину (sale, що не main). Всі класи для роботи з магазином зібрані в модулі sale, тому для роботи з прикладами в статті використовуємо use для простору імен модуля інтернет-магазину.

Кошик (Sale \ Basket)

Кошик являє собою екземпляр класу Bitrix \ Sale \ Basket.

Кошик можна отримати для поточного користувача:

Примітка: getSite працює тільки в публічній частині.

Або отримати корзину замовлення:

Інформація про кошику:

Додавання товару в кошик (аналог CSaleBasket :: Add), оновлення записи і перевірка наявності:

Отримання записи по ID і видалення запису з кошика (аналог CSaleBasket :: Delete):

Отримання товарів у кошику, доступних для покупки (CAN_BUY = Y):

Також є пара методів для отримання кошика у вигляді, придатної для використання в листі або для виведення кількості товарів:

Товар в кошику (Sale \ BasketItem)

Товари в кошику представлені у вигляді колекції об'єктів класу Bitrix \ Sale \ BasketItem:

Sale \ Basket реалізує інтерфейси \ ArrayAccess, \ Countable і \ IteratorAggregate, тому з об'єктом кошика можна звертатися як з масивом, отримуючи товари в кошику за індексом або перебираючи записи за допомогою foreach:

Інформація про товари в кошику:

Також із запису можна отримати інші сутності:

Дії над записами:

Властивості товарів в кошику (Sale \ BasketPropertiesCollection)

У товару в кошику можна отримати колекцію властивостей - об'єкт Bitrix \ Sale \ BasketPropertiesCollection:

Метод getPropertyValues ​​повертає масив властивостей.

Додати нову властивість або змінити існуючі можна наступним чином:

Приклад видалення властивості:

ORM-класи

Звертатися безпосередньо до таблиці кошика, без використання об'єктів можна з використанням ORM-класу Bitrix \ Sale \ Internals \ BasketTable. Наприклад, перебрати товари в кошику поточного користувача:

А таким чином можемо отримати кількість і суму товарів в кошику поточного користувача:

Отримати властивості товарів в кошику допоможе клас Bitrix \ Sale \ Internals \ BasketPropertyTable: