Hãy xem xét có hai sản phẩm, ví dụ: Sản phẩm A và Sản phẩm B. Sản phẩm B là sản phẩm có tính chất virus mà tôi cần thêm vào giỏ hàng khi Sản phẩm A được thêm vào sản phẩm đó.
Để làm như vậy, tôi đang cố gắng thêm Sản phẩm B vào giỏ hàng bằng cách quan sát một sự kiện checkout_cart_product_add_after
. Khi Sản phẩm A được thêm vào, tôi đang truy xuất số lượng sản phẩm được thêm vào Sản phẩm A và dựa trên sản phẩm đó, tôi đang cố gắng thêm Sản phẩm B theo chương trình. Để thêm sản phẩm B, tôi đã viết mã dưới đây:
<?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();
}
}
Tuy nhiên, cố gắng thêm sản phẩm bằng cách sử dụng $this->_cart->addProduct()
không hoạt động. Bất cứ ai có thể xin vui lòng hướng dẫn làm thế nào điều này có thể được thực hiện? Có bất cứ điều gì tôi đang thiếu.
Bất kỳ hướng dẫn sẽ được đánh giá cao.