Получить информацию о корзине покупок в Magento2

Я знаю, что в Magento 1 вы можете получить информацию о корзине покупок на любой странице:

$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
    $productId = $item->getProduct()->getId();
    $productPrice = $item->getProduct()->getPrice();
}

Как мне сделать то же самое в Magento 2?

Ответ 1

Я понял это сам в конце:

<?php

$om =   \Magento\Framework\App\ObjectManager::getInstance();
$cartData = $om->create('Magento\Checkout\Model\Cart')->getQuote()->getAllVisibleItems();
$cartDataCount = count( $cartData );

?>
<div class="bagDrop" id="bagDrop">
    <h4><a href="<?php echo $block->getShoppingCartUrl(); ?>">Quote Basket</a></h4>
    <?php if( $cartDataCount > 1 ): ?>
        <a href="#" class="arr up off" id="bagDropScrollUp"></a>
    <?php endif; ?>
    <div class="bagDropWindow">
    <?php if( $cartDataCount > 0 ): ?>
        <div class="bagDropList" id="bagDropList">
            <?php foreach( $cartData as $item ): ?>
                <?php $product = $item->getProduct(); ?>
                <?php $image = $product['small_image'] == '' ? '/pub/static/frontend/Clear/usb2u/en_GB/images/default-category-image_1.png' : '/pub/media/catalog/product' . $product['small_image']; ?>
                <a href="<?php echo $product['request_path']; ?>" class="bagDropListItem">
                    <img src="<?php echo $image; ?>">
                    <p>
                        <span class="name"><?php echo $product['name']; ?></span><br>
                        <span class="qty">x <?php echo $item->getQty(); ?></span>
                    </p>
                </a>
            <?php endforeach; ?>
        </div>
    <?php else: ?>
        <div class="emptyList">No products in your basket.</div>
    <?php endif; ?>
    </div>
    <?php if( $cartDataCount > 1 ): ?>
        <a href="#" class="arr dn" id="bagDropScrollDown"></a>
    <?php endif; ?>
</div>

Ответ 2

protected $_checkoutSession;

public function __construct (
    \Magento\Checkout\Model\Session $_checkoutSession
    ) {
    $this->_checkoutSession = $_checkoutSession;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{
  $cartData = $this->_checkoutSession->getQuote()->getAllVisibleItems();
  $cartDataCount = count( $cartData );
}

вы можете получить данные котировки в observer

Ответ 3

Вы можете легко получить детали корзины покупок в Magento 2, выполнив нижеуказанный код:

<?php
$object =  \Magento\Framework\App\ObjectManager::getInstance();
$cart = $object->create('Magento\Checkout\Model\Cart')->getQuote()->getAllVisibleItems();
$cartCount = count( $cart );
if($cartCount > 0){
    echo $cartCount;
    } else{
        echo "0" ;
    }
    ?>

Ответ 4

Получить информацию о товаре на странице оплаты

 <?php
    namespace namespace\modulename\Block\xxx;

    class xxx extends \Magento\Framework\View\Element\Template {
        public function __construct(
             \Magento\Checkout\Model\Cart $cart,
             \namespace\modulename\Model\CrossSellFactory $crosssell,
             \Magento\Framework\View\Element\Template\Context $context,
             \Magento\Customer\Model\Session $customerSession,
             \Magento\Framework\ObjectManagerInterface $objectManager,
             array $data = []
        ) {
             parent::__construct($context, $data);
             $this->cart = $cart;
             $this->_crosssell = $crosssell;
             $this->customerSession = $customerSession;
             $this->_objectManager = $objectManager;
        }
        public function getProductIds()
        {
             $productInfo = $this->cart->getQuote()->getItemsCollection();
             foreach ($productInfo as $item) {
                 $item[] = $item->getProductId();
                 echo"<pre>";print_r($item->getProductId());
             }
                 return $item;
        } 
    }

Поместите вышеуказанный .php файл в свой блок и верните значение в файл phtml, как показано ниже.

    <?php
    $Productdetails = $block->getProductIds();
    echo"<pre>";print_r($Productdetails->getName());
    ?>

Ответ 5

Примеры использования 1.\Magento\Checkout\Block\Cart\AbstractCart:: getQuote() github.com Magento/magento2/BLOB/958164/приложение/код/​​Magento/Checkout/Block/Корзина/AbstractCart.php # L101-L112

/**
 * Get active quote
 *
 * @return Quote
 */
public function getQuote()
{
    if (null === $this->_quote) {
        $this->_quote = $this->_checkoutSession->getQuote();
    }
    return $this->_quote;
}
  1. \ Magento\Checkout\Block\Корзина\Итоговые:: GetQuote() github.com Magento/magento2/BLOB/958164/приложение/код/​​Magento/Checkout/Block/Корзина/Totals.php # L190-L205

    /**

    • Получить активную или настраиваемую цитату *
    • @return\Magento\Quote\Model\Quote */ public function getQuote() { if ($ this- > getCustomQuote()) {   return $this- > getCustomQuote(); }

      if (null === $this → _ quote) {   $ this → _ quote = $this → _ checkoutSession- > getQuote(); } return $this → _ quote; }

  2. \ Magento\Checkout\Helper\Корзина:: GetQuote() github.com Magento/magento2/BLOB/958164/приложение/код/​​Magento/Checkout/Helper/Cart.php # L146-L155

    /**

    • Получить экземпляр текущей цитаты *
    • @return\Magento\Quote\Model\Quote
    • @codeCoverageIgnore */ public function getQuote() { return $this → _ checkoutSession- > getQuote(); }