Обновляйте количество товаров во время добавления товара в корзину


Я хочу обновить кол-во до 2, когда товар будет добавлен в корзину. В принципе, я хочу, чтобы, когда пользователь размещает товар в корзине (количество не отображается для пользователя), по умолчанию для него установлено значение кол-во. Я создал наблюдателя и использую событие checkout_cart_product_add_after

Но когда я пытаюсь добавить товар в корзину, каким-то образом процент загрузки процессора достигает 90%, сервер выходит из строя, и мне приходится перезапускать apache. Мой код выглядит как -

namespace Referral\Duplicate\Observer;

use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Event\ObserverInterface;
use Magento\Quote\Model\Quote;
use Magento\Sales\Api\Data\OrderInterface;
use Magento\Checkout\Model\Session as CheckoutSession;


class DuplicateObserver implements ObserverInterface
{
    private $_checkoutSession;
    protected $_productRepository;
    protected $_cart;
    protected $formKey;
    public function __construct(
        \Magento\Catalog\Model\ProductRepository $productRepository, 
        \Magento\Checkout\Model\Cart $cart, 
        \Magento\Framework\Data\Form\FormKey $formKey,
        CheckoutSession $checkoutSession,
        \Magento\Catalog\Model\Product $product,
        \Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
        \Magento\Quote\Model\Quote\Item $item

    )
    {
        $this->quoteRepository = $quoteRepository;
        $this->_productRepository = $productRepository;
        $this->_cart = $cart;
        $this->formKey = $formKey;
        $this->product = $product; 
        $this->_checkoutSession = $checkoutSession;
    }

    public function execute(EventObserver $observer)
    {
        $couponCode = 'duplicate';    
        $items = $observer->getQuoteItem();
        $product = $observer->getEvent()->getData('product');
        $productId = $product->getId();

        $skuQty = count($observer->getQuoteItem());
        $cartItems = $this->_cart->getQuote()->getAllVisibleItems();
        $quote = $this->_checkoutSession->getQuote();
        $_product = $this->_productRepository->getById($productId);

        $params = array(
                    'form_key' => $this->formKey->getFormKey(),
                    'product' => $productId, 
                    'qty'   => 1
                );              
        // //$newProduct = $this->product->load($productId);       
        //$this->_cart->addProduct($product, $params);
        $this->_cart->save();


    }

}

Проблема возникает, когда я раскомментирую строку -

// //$newProduct = $this->product->load($productId);       
        //$this->_cart->addProduct($product, $params);
Author: Gagan, 2020-01-08

1 answers

Вы можете попробовать следующий код для выполнения ваших требований: Используйте приведенное ниже для events.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="checkout_cart_product_add_after">
        <observer name="cart_update_custom" instance="Vendor\Module\Observer\UpdateCartItem" />
    </event>
</config>

И используйте приведенный ниже код UpdateCartItem.php :

<?php

namespace Vendor\Module\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Checkout\Model\Cart;

class UpdateCartItem implements ObserverInterface {
    /**
     * @var Cart
     */
    protected $_cart;

    public function __construct(
        cart $cart

    ) {
        $this->_cart = $cart;
    }

    /**
     * After cart observer
     * @param Observer $observer
     * @return Cart
     * @throws \Magento\Framework\Exception\LocalizedException
     * @throws \Magento\Framework\Exception\NoSuchEntityException
     */
    public function execute(Observer $observer) {
        $quoteItem = $observer->getEvent()->getQuoteItem();
        $quoteItem->setData('qty', 4);
        $this->_cart->save();
    }

}

Запустите компиляцию и тестирование di.

 0
Author: Sukumar Gorai, 2020-01-08 15:14:59