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

Add product to cart programatically Magento2

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

Recoverable Error: Argument 2 passed to Eecom\Atc\Controller\Atc\Index::__construct() must be an instance of Magento\Framework\View\Result\PageFactory, instance of Magento\Framework\App\Cache\TypeList given, called in C:\wamp\www\productzoom\var\generation\Eecom\Atc\Controller\Atc\Index\Interceptor.php on line 14 and defined in C:\wamp\www\productzoom\app\code\Eecom\Atc\Controller\Atc\Index.php on line 21

下面是我的代码

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');


         }
    }

请指出我哪里做错了

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

请试试这个

 <?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;
        }
    }