繁体   English   中英

如何在Magento中以编程方式将产品添加到购物车

[英]How to add product to cart programmatically in Magento

我无法在Magento中以编程方式将产品添加到购物车中,我尝试了所有可能的技术以将一定数量的产品添加到购物车(在Magento中),以下是我尝试过的事情,并从论坛/站点获得了帮助。 但是他们都不在工作。 我正在使用Magento社区版本1.9.1.1。 如果有人有任何建议/答案,请分享。

  • 尝试通过URL进行操作-例如[Magento_Store_URL]/checkout/cart/add?product=[id]&qty=[qty]或什至是这样- [Magento_Store_URL]/checkout/cart/add/product/[id]/qty/[qty] 我还试图与form_key ,经由产生Mage::getSingleton('core/session')->getFormKey(); 所有这些东西根本不起作用。 这些东西在这里提到-Magento网站
  • 接下来,我已经像这样通过编程方式尝试了。

 <?php require_once 'app/Mage.php'; Mage::app(); $product=new Mage_Catalog_Model_Product(); $product->load(1); // 1 is product id, this is simple product ( type) $quote = Mage::getSingleton('checkout/session')->getQuote(); $quote->addProduct($product, 1 ); // quantity is 1 $cart = Mage::getSingleton('checkout/cart'); $cart->init(); // tried commenting this too! $cart->addProduct($product, 1 ); // quantity is 1 $cart->save(); Mage::getSingleton('checkout/session')->setCartWasUpdated(true); $quote->collectTotals()->save(); header('Location: '. 'http://localhost/magento/index.php/checkout/cart'); 

  • 还尝试了以下。

 <?php require_once 'app/Mage.php'; Mage::app(); $params=array( 'product'=>1, 'qty' => 3 ); $cart = Mage::getSingleton('checkout/cart'); $product = new Mage_Catalog_Model_Product(); $product->load($params["product"]); $cart->addProduct($product, $params); $cart->save(); Mage::getSingleton('checkout/session')->setCartWasUpdated(true); header('Location: '. 'http://localhost/magento/index.php/checkout/cart'); 

我已从以下网站获得帮助。

我的代码有什么错误,我尝试过什么,还是Magento安装有任何设置问题?

更新1我已经从下面对这个问题提出的答案中尝试了,仍然没有用

 $formKey = Mage::getSingleton('core/session')->getFormKey(); $params = array( 'product' => 3, 'qty' => 2, 'form_key' => $formKey ); $product = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($params['product']); $cart = Mage::helper('checkout/cart')->getCart(); $cart->addProduct($product, $params); $cart->save(); 

更新2

如果我创建了一个控制器并将所有代码放置在此处,则无法正常工作-在引用/app/Mage.php的独立页面中。

从1.8开始,您将无法仅通过GET请求将产品添加到购物车,因为您需要提供form_key。

您应该可以使用以下方法将产品添加到购物车:

form_key是这里的主要内容。

$params //should include at least a valid form_key, qty

$product = Mage::getModel('catalog/product')
                    ->setStoreId(
                        Mage::app()
                        ->getStore()
                        ->getId()
                    )
                    ->load($product_id);

$cart = Mage::helper('checkout/cart')->getCart();
$cart->addProduct($product, $params);
$cart->save();

如果需要调试,请查看app \\ code \\ core \\ Mage \\ Checkout \\ Model \\ Cart.php中的addProduct函数(然后也可以在app \\ code \\ core \\ Mage \\ Sales \\ Model \\ Quote.php中)

这是将产品添加到购物车/报价的简单方法:

$customer = Mage::getModel('customer/customer')->load($customerId);
$product = Mage::getModel('catalog/product')->load($productId);
// load quote by customer and store...
$quote = Mage::getModel('sales/quote')->setStore($storeId)->loadByCustomer($customerId);
$quote->addProduct($product, 1);
$quote->setIsActive(1);
$quote->collectTotals()->save();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM