D7, получение информации о товарах и торговых предложениях в корзине(без заказа), как получить длину, ширину и высоту?

Требуется получить информацию о товарах и торговых предложениях корзины bitrix не закреплённой за заказом. Как получить вес понятно. А как получить ширину, длину и высоту?

Сейчас делаю так:

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

use Bitrix\Main\Context,
Bitrix\Currency\CurrencyManager,
Bitrix\Sale\Order,
Bitrix\Sale\Basket,
Bitrix\Sale\Delivery,
Bitrix\Sale\PaySystem,
YandexCheckout\Client;

$basket = \Bitrix\Sale\Basket::loadItemsForFUser(\Bitrix\Sale\Fuser::getId(CSaleBasket::GetBasketUserID()), \Bitrix\Main\Context::getCurrent()->getSite());

// [НАЧАЛО] Применяем к товарам к полученной корзине скидки(необходимо если корзина не в заказе)
$context = new \Bitrix\Sale\Discount\Context\Fuser($basket->getFUserId());
$discounts = \Bitrix\Sale\Discount::buildFromBasket($basket, $context);
$r = $discounts->calculate();
if ($r->isSuccess()) {
$result = $r->getData();
if (isset($result['BASKET_ITEMS'])) {
$basket->applyDiscount($result['BASKET_ITEMS']);
}
}
// [КОНЕЦ] Применяем к товарам к полученной корзине скидки(необходимо если корзина не в заказе)

$sumNoDiscont = 0;// сумма всех товаров без скидок
$sumDiscont = 0;// сумма всех товаров с скидкой
foreach ($basket->getBasketItems() as $basketItem) {// перебираем товары и торговые предложения в корзине
$priceBase = $basketItem->getBasePrice();
$priceDiscont = $basketItem->getPrice();
$weight = $basketItem->getWeight();
$length = $basketItem->как_получить(?);
$width = $basketItem->как_получить(?);
$height = $basketItem->как_получить(?);


if ($priceBase != $priceDiscont) {
$sumDiscont += $priceDiscont;
} else {
$sumNoDiscont += $priceBase;
}

echo "$weight - $length - $width - $height" . $basketItem->getField("NAME") . " - " . $priceDiscont . " - " . $priceBase . "\n";// отладка
}

Вопрос: как из $basketItem получить длину, ширину, высоту?
___________________________________
Примечание! То что можно получить вот так CCatalogProduct::GetByID($_id_торгового_предложения);// возвращается массив в котором есть длина, ширина, высота я и сам знаю. Интересует можно ли прямо из $basketItem-> как то получить?
  • Вопрос задан
  • 1989 просмотров
Пригласить эксперта
Ответы на вопрос 2
@MiXaLiN17
$basketItem->getField('NAME');// Любое поле товара в корзине
Ответ написан
@Nikolays93
Web-разработчик
Не знаю по поводу документации, но у себя заметил, что в свойстве DIMENSIONS хранятся сериализированые данные о размере товара.

<?php
// a:3:{s:5:"WIDTH";N;s:6:"HEIGHT";N;s:6:"LENGTH";N;}
$dimensions = $basketItem->getField('DIMENSIONS');
// @var array
$arDimensions = unserialize($dimensions);

print_r($arDimension);


Может кому пригодится
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы