以编程方式将产品添加到购物车 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;
}
}
嗨,我正在构建一个模块,我在其中通过控制器将产品添加到购物车。但是抛出以下错误
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;
}
}