Wil*_*der 2 php product magento 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();
Run Code Online (Sandbox Code Playgroud)
但是,这在Magento 1.8中不再起作用.我一直在尝试/搜索为什么会这样.可悲的是,我没有找到任何关于这个问题的线索.
它可能与1.8中的更改有关,这也导致在使用URL方法时需要表单键; 这是一个疯狂的猜测.
在使用Magento 1.8时,有任何关于如何做到这一点的想法或工作示例吗?
Wil*_*der 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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17873 次 |
| 最近记录: |