我无法在Magento中以编程方式将产品添加到购物车,我已经尝试了将所有可能的技术添加到购物车中的产品(在Magento中),以下是我尝试的内容和论坛/网站的帮助。但他们都没有工作。我正在使用Magento社区版1.9.1.1。如果有人有任何建议/答案,请分享。
[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 website
<?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');
&#13;
<?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');
&#13;
我从以下网站获得了帮助。
我的代码中是否有任何错误,无论我尝试过什么,或者我的Magento安装有任何设置问题?
更新1 我在下面的答案proposed to this question中尝试了,仍然是不工作。
$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();
&#13;
更新2
这是有效的,如果我创建一个控制器并将所有代码放在那里,而不是工作 - 在一个引用/app/Mage.php的独立页面中。
答案 0 :(得分:2)
自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 \ Sales \中,请查看app \ code \ core \ Mage \ Checkout \ Model \ Cart.php中的addProduct
函数Model \ Quote.php也是)
答案 1 :(得分:0)
以下是将产品添加到购物车/报价的简便方法:
$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();