Bedenken Sie, dass es zwei Produkte gibt, nämlich: Produkt A und Produkt B. Produkt B ist ein virales Produkt, das ich in den Warenkorb legen muss, wenn Produkt A hinzugefügt wird.
Zu diesem Zweck versuche ich, Produkt B in den Warenkorb zu legen, indem ich ein Ereignis beobachte checkout_cart_product_add_after
. Sobald Produkt A hinzugefügt wurde, rufe ich die Menge des für Produkt A hinzugefügten Produkts ab und versuche darauf basierend, Produkt B programmgesteuert hinzuzufügen. Um Produkt B hinzuzufügen, habe ich folgenden Code geschrieben:
<?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();
}
}
Der Versuch, ein Produkt mit hinzuzufügen, $this->_cart->addProduct()
funktioniert jedoch nicht. Kann jemand bitte anleiten, wie dies getan werden kann? Gibt es etwas, was mir fehlt?
Jede Anleitung wird geschätzt.
quelle
Ich habe ein anderes Formular für den protokollierten Kunden- und Gastwagen erstellt
quelle