Como remover todos os itens do carrinho no Magento 2
Utilizando Object Manager
$checkoutSession = $this->_objectManager->create('Magento\Checkout\Model\Session');
$allItems = $checkoutSession->getQuote()->getAllVisibleItems();
foreach ($allItems as $item) {
$itemId = $item->getItemId();
$cart->removeItem($itemId)->save();
}
Por Meio de um Controller
use Magento\Checkout\Model\Cart;
use Magento\Checkout\Model\Session as CheckoutSession;
use Magento\Framework\App\Action\Action;
class Clearcart extends Action
{
protected $_modelCart;
protected $ checkoutSession;
public function __construct(CheckoutSession $checkoutSession,Cart $modelCart)
{
$this->checkoutSession = $checkoutSession;
$this->_modelCart = $modelCart;
}
public function execute()
{
$cart = $this->_modelCart;
$quoteItems = $this->checkoutSession->getQuote()->getItemsCollection();
foreach($quoteItems as $item)
{
$cart->removeItem($item->getId())->save();
}
}
}
Removendo por meio de uma Classe Model
namespace Vendor\Extension\Controller\Index;
use Magento\Checkout\Model\Session as CheckoutSession;
use Magento\Quote\Model\Quote\Item
class Clearcart extends Action
{
protected $modelCartItem;
protected $checkoutSession;
public function __construct(CheckoutSession $checkoutSession,Item $modelCartItem)
{
$this->checkoutSession = $checkoutSession;
$this->_ modelCartItem = $modelCartItem;
}
public function execute()
{
$checkoutSession = $this->getCheckoutSession();
$allItems = $checkoutSession->getQuote()->getAllVisibleItems();
foreach ($allItems as $item)
{
$cartItemId = $item->getItemId();
$itemObj=$this->getItemModel()->load($cartItemId);
$itemObj->delete();
}
}
}