首页 文章

以编程方式将产品添加到购物车Magento2

提问于
浏览
0

我正在构建一个模块,我通过控制器将产品添加到购物车 . 但是抛出以下错误

可恢复的错误:传递给Eecom \ Atc \ Controller \ Atc \ Index :: __ construct()的参数2必须是Magento \ Framework \ View \ Result \ PageFactory的实例,给出Magento \ Framework \ App \ Cache \ TypeList的实例,在第14行的C:\ wamp \ www \ productzoom \ var \ generation \ Eecom \ Atc \ Controller \ Atc \ Index \ Interceptor.php中调用,并在C:\ wamp \ www \ productzoom \ app \ code \ Eecom \ Atc中定义第21行的\ Controller \ Atc \ Index.php

以下是我的代码

namespace Eecom\Atc\Controller\Atc;

 class Index extends \Magento\Framework\App\Action\Action {

         /**
          * @var \Magento\Checkout\Model\Cart
          */
         protected $cart;
         /**
          * @var \Magento\Catalog\Model\Product
          */
         protected $product;

         public function __construct(
             \Magento\Framework\App\Action\Context $context,
             \Magento\Framework\View\Result\PageFactory $resultPageFactory,
             \Magento\Catalog\Model\Product $product,
             \Magento\Checkout\Model\Cart $cart
         ) {
             $this->resultPageFactory = $resultPageFactory;
             $this->_customerSession = $customerSession;
             $this->cart = $cart;
             $this->product = $product;
             parent::__construct($context);
         }
         public function execute()
         {
             try {
                 $params = array();
                 $params['qty'] = '1';//product quantity
                 /*get product id*/
                 $pId = '1';//productId
                 $_product = $this->product->load($pId);
                 if ($_product) {
                     $this->cart->addProduct($_product, $params);
                     $this->cart->save();
                 }

                 $this->messageManager->addSuccess(__('Add to cart successfully.'));
             } catch (\Magento\Framework\Exception\LocalizedException $e) {
                 $this->messageManager->addException(
                     $e,
                     __('%1', $e->getMessage())
                 );
             } catch (\Exception $e) {
                 $this->messageManager->addException($e, __('error.'));
             }
             /*cart page*/
             //$this->getResponse()->setRedirect('/checkout/cart/index');


         }
    }

请建议我在哪里做错了

2 回答

  • 0

    您可能需要删除 var/generation 文件夹,因为您可能已经更改了构造函数签名 .

  • 3

    请试试这个

    <?php
        namespace Webkul\Hello\Controller\Index;
    
        use Magento\Framework\App\Action\Context;
        use Magento\Framework\View\Result\PageFactory;
    
        class AddProducttocart extends \Magento\Customer\Controller\AbstractAccount
        {
            /**
             * @var PageFactory
             */
            protected $resultPageFactory;
            /**
             * @var \Magento\Framework\Data\Form\FormKey
             */
            protected $formKey;
            /**
             * @param Context $context
             * @param PageFactory $resultPageFactory
             */
            public function __construct(
                Context $context,
                \Magento\Framework\Data\Form\FormKey $formKey,
                PageFactory $resultPageFactory
            ) {
                parent::__construct($context);
                $this->formKey = $formKey;
                $this->resultPageFactory = $resultPageFactory;
            }
    
            /**
             *
             * @return \Magento\Framework\View\Result\Page
             */
            public function execute()
            {
                $resultPage = $this->resultPageFactory->create();
                    $params = array(
                        'form_key' => $this->formKey->getFormKey(),
                        'product' =>12,//product Id
                        'qty'   =>1,//quantity of product
                        'price' =>100 //product price
                    );
                    $this->_redirect("checkout/cart/add/form_key/", $params);
                /** @var \Magento\Framework\View\Result\Page $resultPage */
                return $resultPage;
            }
        }
    

相关问题