Magento 2: Получите количество добавленного товара в корзину
Я хочу получить общее количество товаров, добавленных в корзину, по идентификатору продукта.
Я использую класс \Magento\Checkout\Model\Cart
, чтобы получить все товары в корзине.
$items = $cart->getQuote()->getAllItems();
foreach ($items as $item) {
if ($item->getProductId() == '101') {
return $item->getQty(); //Get product qty
}
}
Это приведет к добавлению количества товара в корзину. Но если у меня в корзине 30 товаров, это повторится 30 раз.
Есть ли какой-либо способ получить количество одного товара без зацикливания всех товаров из корзины?
Любая помощь приветствуется!
3 answers
Вы можете напрямую получить общее количество quote
без использования foreach
, используя этот метод
$quote->getItemsQty();
Если вы хотите зарегистрировать объект order
, то вы можете получить его,
$order->getTotalQtyOrdered()
Где $quote
- объект Magento\Quote\Model\Quote
и
$order
является Magento\Sales\Model\Order
объектом.
//add code in list.phtml
<div>
<?php
$IdDoProduto = $_product->getId();
$cart = $this->helper('\Magento\Checkout\Helper\Cart');
$itens = $cart->getQuote()->getItems();
foreach ($itens as $item){
if($IdDoProduto == $item->getProduct_id()){
echo $item->getQty();
}
}
?>
</div>
Вы можете получить количество товара из приведенного ниже кода, он проверит наличие товара в текущей коллекции товаров и вернет количество, если товар доступен...
$items = $cart->getQuote()->getAllItems();
$productId="your_product_id";
foreach ( $items as $item) {
if ($item->getProductId() == $productId) {
return $item->getQty();
}
}