Magento 2.3: Как сделать пользовательский блок со всеми добавленными товарами в корзину? - PullRequest
0 голосов
/ 30 сентября 2019

Я использую тему Порту. В дополнение к доступной боковой панели мини-карты, я хотел бы создать специальный блок справа с липкой корзиной, чтобы клиенты могли видеть, что они добавляют и что они хотят удалить из этой корзины (без нажатия на мини-картузначок в шапке). Аналогично этому: введите описание изображения здесь Я попытался использовать рекомендованное здесь решение: Magento 2 получает элементы корзины в классе блоков. Я не знаю, почему оно не работает. Я прилагаю код ниже.

1) BDK / Mycartblock / Block / ShoppingCart.php

<?php
namespace BDK\Mycartblock\Block;
use \Magento\Framework\View\Element\Template;

class ShoppingCart extends \Magento\Framework\View\Element\Template
{
    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Checkout\Model\Session $checkoutSession,
        array $data = []
    ) {
        $this->_checkoutSession = $checkoutSession;;
        parent::__construct($context, $data);
    }

    /**
     * Get quote object associated with cart. By default it is current customer session quote
     *
     * @return \Magento\Quote\Model\Quote
     */
    public function getQuoteData()
    {
        $this->_checkoutSession->getQuote();
        if (!$this->hasData('quote')) {
            $this->setData('quote', $this->_checkoutSession->getQuote());
        }
        return $this->_getData('quote');
    }
}

2) BDK / Mycartblock / etc / module.xml

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="BDK_Mycartblock" schema_version="1.0.0" setup_version="1.0.0" >
    </module>
</config>

3) BDK / Mycartblock / view / frontend / layout / default.xml

<?xml version="1.0"?>                                                     
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
        <referenceContainer name="content">
           <block class="BDK\Mycartblock\Block\ShoppingCart" name="mycartblock" template="BDK_Mycartblock::my-template.phtml">
            </block>
        </referenceContainer>
    </body>
</page>

4) BDK / Mycartblock / view / frontend / templates / my-template.phtml

<?php

// Get all visible items in cart
$quote = $block->getQuoteData();

foreach($quote->getAllVisibleItems() as $_item) {
    echo 'ID: '.$_item->getProductId().'<br/>';
    echo 'Name: '.$_item->getName().'<br/>';
    echo 'Sku: '.$_item->getSku().'<br/>';
    echo 'Quantity: '.$_item->getQty().'<br/>';
    echo 'Price: '.$_item->getPrice().'<br/>';
    echo 'Product Type: '.$_item->getProductType().'<br/>';
    echo 'Discount: '.$_item->getDiscountAmount();echo "<br/>";
    echo "<br/>";
}
?>

Просьба помочь найти решение. Спасибо всем заранее!

...