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

Php 如何在Magento中以编程方式将产品添加到购物车,php,magento,session,Php,Magento,Session,我无法在Magento中以编程方式将产品添加到购物车中,我已尝试了各种可能的技术将产品添加到购物车中(在Magento中),以下是我尝试过的内容以及论坛/网站获得的帮助。但它们都不起作用。我使用的是Magento社区版1.9.1.1。如果有人有任何建议/答案,请分享 尝试通过URL执行此操作-例如,[Magento\u Store\u URL]/checkout/cart/add?product=[id]&qty=[qty]或类似的方式-[Magento\u Store\u URL]/chec

我无法在Magento中以编程方式将产品添加到购物车中,我已尝试了各种可能的技术将产品添加到购物车中(在Magento中),以下是我尝试过的内容以及论坛/网站获得的帮助。但它们都不起作用。我使用的是Magento社区版1.9.1.1。如果有人有任何建议/答案,请分享

  • 尝试通过URL执行此操作-例如,
    [Magento\u Store\u URL]/checkout/cart/add?product=[id]&qty=[qty]
    或类似的方式-
    [Magento\u Store\u URL]/checkout/cart/add/product/[id]/qty/[qty]
    。我也尝试过使用
    form_key
    ,它是通过
    Mage::getSingleton('core/session')->getFormKey()生成的。所有这些东西都不管用。这里提到了这些事情-
  • 接下来,我以编程方式尝试了via,如下所示

自1.8版以来,您将无法仅从GET请求向购物车添加产品,因为您需要提供表单密钥

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

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

不确定,但可能在保存之前必须在脚本中指明当前存储:Mage::app()->setCurrentStore(Mage_Core_Model_app::ADMIN_store_ID);我只有一个商店,已经尝试了你的建议,仍然不起作用。谢谢你提供的信息,我会检查一下,然后再给你回复。更新:如果我创建了一个控制器并将所有代码放在那里,这就起作用了,不起作用-在一个引用/app/Mage.php的独立页面中,你能发布整个独立脚本吗?(我猜这是因为会话正在启动,而它与您在浏览器中加载的会话不匹配?)这在我发布的另一个问题中提到,检查最后一部分(2行)。我使用了php脚本顶部的这两行代码,后面是代码,最后一行是重定向到checkout/cart链接。