Php 从Magento2中的observer中删除并重新添加可配置产品
我正在使用Php 从Magento2中的observer中删除并重新添加可配置产品,php,magento2,Php,Magento2,我正在使用 checkout_cart_product_add_before observer事件调用一个类,该类从卡中删除产品并重新添加。我之所以需要这个,是因为我需要数量与在“数量”文本框中输入的数量相等,而不是将其添加到总数中(例如,如果购物车数量为10,我在“数量”框中放入5,默认的Magento2功能将使购物车中的数量变为15-我的脚本将其变为5) 问题是它只适用于简单的产品,当涉及到可配置的产品(一个可能有两个黑色和绿色色样的产品)时,它会删除整个产品并重新添加新的可配置产品(例如
checkout_cart_product_add_before
observer事件调用一个类,该类从卡中删除产品并重新添加。我之所以需要这个,是因为我需要数量与在“数量”文本框中输入的数量相等,而不是将其添加到总数中(例如,如果购物车数量为10,我在“数量”框中放入5,默认的Magento2功能将使购物车中的数量变为15-我的脚本将其变为5)
问题是它只适用于简单的产品,当涉及到可配置的产品(一个可能有两个黑色和绿色色样的产品)时,它会删除整个产品并重新添加新的可配置产品(例如,如果我有数量5的蓝色衬衫,我添加数量8的绿色衬衫,它将完全删除蓝色衬衫并添加绿色衬衫
我已经包装了我的脚本,如果不可配置,以阻止这种情况发生,但有人知道我如何编辑此脚本,以删除可配置的id,而不是简单的
namespace XX\XX\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use \Magento\Checkout\Model\Session as CheckoutSession;
use \Magento\Checkout\Model\Cart;
class DeleteAndReAddFromCart implements ObserverInterface
{
protected $request;
protected $_cart;
/** @var CheckoutSession */
protected $checkoutSession;
public function __construct(\Magento\Framework\App\RequestInterface $request, cart $cart, CheckoutSession $checkoutSession)
{
$this->_cart = $cart;
$this->request = $request;
$this->checkoutSession = $checkoutSession;
}
public function execute(\Magento\Framework\Event\Observer $observer)
{
$product = $observer->getProduct();
$productId = $observer->getProduct()->getId();
$prodtype = $observer->getProduct()->getTypeId(); //is configarable or simple
$items = $this->_cart->getItems();
$itemCount = count($items);
if ($itemCount > 0) {
foreach ($items as $item) {
if ($prodtype != 'configurable') {
if ($item->getProduct()->getId() == $productId) {
$itemId = $item->getItemId();
$item->isDeleted(true);
$this->_cart->save();
}
}
}
}
}
}
你也可以试着找到答案