删除添加到购物车消息Magento 2

时间:2019-03-13 15:10:16

标签: magento2 magento-2.0 magento2.2

我要在添加到购物车时删除成功消息。现在,当您单击Add to Cart按钮时,它会显示一条消息Successfully added <product> to cart,但我不想显示此消息。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

做到这一点很容易。在下面创建一个基本模块 app/code/<vendor>/<module>

/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Vendor_Module',
    __DIR__
);

/etc/module.xml

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

现在,删除“添加到购物车消息”的方法是观察它的可观察事件,并在派发后将其删除。创建具有以下内容的/etc/events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="checkout_cart_add_product_complete">
        <observer name="your_observer_name" instance="Vendor\Module\Observer\AfterAddToCart" />
    </event>
</config>

因此,在派发checkout_car_add_product_complete时,将调用观察者AfterAddToCart。像这样创建它:

<?php
namespace Vendor\Module\Observer;

use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Checkout\Model\Cart as CustomerCart;

class AfterAddCart implements ObserverInterface
{

    private $cart;

    public function __construct(
        CustomerCart $cart
    ){
        $this->cart = $cart;
    }

    public function execute(EventObserver $observer)
    {
        $this->cart->getQuote()->setHasError(true);
    }
}

就是这样。 “添加到购物车”消息将不再显示,而所有其他消息(如“添加到比较”等)仍将显示。

此解决方案最初不是我的,但我不记得在哪里找到它。

答案 1 :(得分:0)

  1. di.xml <preference for="Magento\Checkout\Controller\Cart\Add" type="<Vendor>\<Module>\Controller\Cart\Add"/>
  2. 在“ execute()”中扩展“添加购物车”控制器
$this->messageManager->getMessages()->deleteMessageByIdentifier('addCartSuccessMessage');