Pertimbangkan ada dua produk yaitu: Produk A dan Produk B. Produk B adalah produk virual yang perlu saya tambahkan ke troli ketika Produk A ditambahkan ke dalamnya.
Untuk melakukannya, saya mencoba menambahkan Produk B ke troli dengan mengamati suatu peristiwa checkout_cart_product_add_after
. Setelah Produk A ditambahkan, saya mengambil jumlah produk yang ditambahkan untuk Produk A dan berdasarkan itu saya mencoba untuk menambahkan Produk B secara terprogram. Untuk menambahkan produk B, saya telah menulis kode di bawah ini:
<?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();
}
}
Namun, mencoba menambahkan produk menggunakan $this->_cart->addProduct()
tidak berhasil. Adakah yang bisa memandu bagaimana hal ini dapat dilakukan? Apakah ada sesuatu yang saya lewatkan.
Bimbingan apa pun akan dihargai.
sumber
Saya membuat formulir lain, untuk gerobak pelanggan dan tamu
sumber