magento 1.8使用php将产品添加到购物车

时间:2014-02-18 22:40:30

标签: php magento product cart

直到Magento 1.7我能够使用以下代码以编程方式将产品添加到购物车:

require_once '../app/Mage.php'; 
Mage::getSingleton('core/session', array('name' => 'frontend')); 
umask(0);  
Mage::app();  
$session = Mage::getSingleton('customer/session');  
$product = Mage::getModel('catalog/product')->load(99);  // Random product ID

// get cart and add product
$cart = Mage::getSingleton('checkout/cart'); 
$cart->init();
$cart->addProduct($product, 1);

// update session
$session->setCartWasUpdated(true);

// save the cart
$cart->save();  

然而,这在Magento 1.8中不再起作用。我一直在尝试/搜索为什么会这样。可悲的是,我没有找到任何关于这个问题的线索。

它可能与1.8中的更改有关,这也导致在使用URL方法时需要表单键;这是一个疯狂的猜测。

在使用Magento 1.8时,有任何关于如何执行此操作的想法或工作示例吗?

2 个答案:

答案 0 :(得分:12)

重新审视它并立即让它很好地工作。仅供任何人参考,以下是我使用的代码(Magento 1.8):

// Mage init
require_once '../../app/Mage.php'; 
umask(0);  
Mage::init('default');
Mage::getSingleton('core/session', array('name' => 'frontend'));  

// Get customer session
$session = Mage::getSingleton('customer/session'); 

// Get cart instance
$cart = Mage::getSingleton('checkout/cart'); 
$cart->init();

// Add a product (simple); id:12,  qty: 3 
$cart->addProduct(12, 3);

// Add a product with custom options
$productInstance = Mage::getModel('catalog/product')->load($productId);
$param = array(
    'product' => $productInstance->getId(),
    'qty' => 1,
    'options' => array(
        234 => 'A value'  // Custom option with id: 234
    )
);
$request = new Varien_Object();
$request->setData($param);
$cart->addProduct($productInstance, $request);

// Set shipping method
$quote = $cart->getQuote();
$shippingAddress = $quote->getShippingAddress();
$shippingAddress->setShippingMethod('flatrate_flatrate')->save();               

// update session
$session->setCartWasUpdated(true);

// save the cart
$cart->save(); 

答案 1 :(得分:0)

在控制器中添加此代码并从表单

发送产品ID
UNION