Magento以编程方式将可配置产品添加到购物车
我正在尝试向购物车添加一个可配置的产品,但是虽然它没有抛出任何异常,购物车仍然是空的 我以前使用过这段代码,没有任何问题,所以我不确定这是否与我使用的Magento版本有关 我使用的代码是:Magento以编程方式将可配置产品添加到购物车,magento,cart,configurable-product,Magento,Cart,Configurable Product,我正在尝试向购物车添加一个可配置的产品,但是虽然它没有抛出任何异常,购物车仍然是空的 我以前使用过这段代码,没有任何问题,所以我不确定这是否与我使用的Magento版本有关 我使用的代码是: $post = $this->getRequest()->getPost(); $session = Mage::getSingleton('customer/session'); $attr = array_keys($post['sa']); $cart = M
$post = $this->getRequest()->getPost();
$session = Mage::getSingleton('customer/session');
$attr = array_keys($post['sa']);
$cart = Mage::getSingleton('checkout/cart');
$cart->init();
foreach ($post['sa'][$attr[0]] as $optId){
try {
if (abs($post['qty'][$optId]) > 0){
$product = Mage::getModel('catalog/product')->load($post['product']);
$this->getRequest()->setParam('product',$post['product']);
$this->getRequest()->setParam('super_attribute',array(
$attr[0] => $optId
));
$options = array(
"product"=>$post['product'],
"super_attribute"=>array(
$attr[0] => $optId
),
"qty"=>$post['qty'][$optId]
);
$opts = new Varien_Object();
$opts->setData($options);
var_dump($opts);
$cart->addProduct($product, $opts);
$cart->save();
}
} catch (Exception $e){
var_dump($e);
}
}
$cart->save(); // save the cart
$cart->setCartWasUpdated(true);
$pdts = $cart->getAllVisibleItems();
var_dump($pdts);
die("??");
因此,我希望得到一个包含6个项目(3个产品,可配置+简单)的购物车,但是我得到的是空值,正如您从下面看到的,它还显示了我试图传递的$opts对象:
object(Varien_Object)[507]
protected '_data' =>
array (size=3)
'product' => string '86' (length=2)
'super_attribute' =>
array (size=1)
179 => string '20' (length=2)
'qty' => string '1' (length=1)
protected '_hasDataChanges' => boolean true
protected '_origData' => null
protected '_idFieldName' => null
protected '_isDeleted' => boolean false
protected '_oldFieldsMap' =>
array (size=0)
empty
protected '_syncFieldsMap' =>
array (size=0)
empty
object(Varien_Object)[663]
protected '_data' =>
array (size=3)
'product' => string '86' (length=2)
'super_attribute' =>
array (size=1)
179 => string '19' (length=2)
'qty' => string '2' (length=1)
protected '_hasDataChanges' => boolean true
protected '_origData' => null
protected '_idFieldName' => null
protected '_isDeleted' => boolean false
protected '_oldFieldsMap' =>
array (size=0)
empty
protected '_syncFieldsMap' =>
array (size=0)
empty
object(Varien_Object)[678]
protected '_data' =>
array (size=3)
'product' => string '86' (length=2)
'super_attribute' =>
array (size=1)
179 => string '17' (length=2)
'qty' => string '3' (length=1)
protected '_hasDataChanges' => boolean true
protected '_origData' => null
protected '_idFieldName' => null
protected '_isDeleted' => boolean false
protected '_oldFieldsMap' =>
array (size=0)
empty
protected '_syncFieldsMap' =>
array (size=0)
empty
null
??
任何帮助都将受到感谢 您可以使用以下代码添加
try {
$product_id = '126';
$product = Mage::getModel('catalog/product')->load($product_id);
$cart = Mage::getModel('checkout/cart');
$cart->init();
$params = array(
'product' => $product_id,
'super_attribute' => array(
525 => 100,
//525 is the attribute id of size and 100 is the selected option value (small) of that attribute.
),
'qty' => 2,
);
$cart->addProduct($product, $params);
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
Mage::getSingleton('core/session')->addSuccess('Product added successfully');
//to do
}
catch (Exception $e) {
echo $e->getMessage();
}
正如生活中所遇到的那样,这个问题实际上与添加到购物车无关 使用localhost作为Magento上的主机名存在一个已知的“问题”——这里的许多其他帖子都处理了这个问题。我们正在努力解决这个问题,但显然它仍然没有在Chrome中持久化我的会话,但在Firefox中运行良好。除非我弄错了(很可能),否则这只适用于添加带有自定义选项的产品?我正在尝试添加一个具有super_属性的可配置产品。