考虑有两种产品,即:产品A和产品B。产品B是一种虚拟产品,当将产品A添加到购物车时,我需要将其添加到购物车中。
为此,我正在尝试通过观察事件将产品B添加到购物车checkout_cart_product_add_after
。添加产品A后,我将检索为产品A添加的产品数量,并基于此我尝试以编程方式添加产品B。要添加产品B,我编写了以下代码:
<?php
namespace MyModule\Applicationcharges\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\RequestInterface;
class AddCharges implements ObserverInterface
{
protected $_productRepository;
protected $_cart;
public function __construct(\Magento\Catalog\Model\ProductRepository $productRepository, \Magento\Checkout\Model\Cart $cart){
$this->_productRepository = $productRepository;
$this->_cart = $cart;
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
$item=$observer->getEvent()->getData('quote_item');
$product=$observer->getEvent()->getData('product');
$item = ( $item->getParentItem() ? $item->getParentItem() : $item );
$product->getQty();
$params = array(
'product' => 2056,
'qty' => 1
);
$_product = $this->_productRepository->getById(2056);
$this->_cart->addProduct($_product,$params);
$this->_cart->save();
}
}
但是,尝试使用添加产品$this->_cart->addProduct()
无效。谁能指导如何做到这一点?有什么我想念的吗?
任何指导将不胜感激。