![](/img/trans.png)
[英]Magento | How i can add a product in shopping cart in a custom module?
[英]Magento - How can I add or remove a custom option from a product in the cart?
我正在尝试从购物车中的产品添加或删除自定义选项。 自定义选项是在后端针对产品本身定义的,我并不是试图动态地组成一个新的自定义选项或类似的东西。 我的所有自定义选项都是单个复选框,以防万一。
我在checkout_cart_update_items_after
上使用观察器,并通过Mage::getSingleton('checkout/session')->getQuote()->getAllItems()
循环。 我可以看到当前使用哪个选项选择了自定义选项
$orderOptions = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
if ( isset($orderOptions['info_buyRequest']['options']) )
// cart item has options selected.
首先,我真的很希望能够删除这些自定义选项。 我希望能够找到类似$item->removeOption($optionId);
东西$item->removeOption($optionId);
,但我找不到任何方法。
在第二种情况下,我真的很希望能够向项目添加自定义选项。 我已经尝试过各种方法来做到这一点,包括$item->addOption(array('code'=>$optionCode, 'value'=>1));
。
我都无法上班,而且我确定我只是缺少一些非常简单的东西。 你能帮我吗?
如果要在报价项目上即时指定自定义产品选项(例如:在订单中为每种产品添加交货日期),则可以使用观察者来添加自定义选项。
例:
<controller_action_predispatch_checkout>
<observers>
<options_observer>
<class>YOUR_CLASS_NAME</class>
<method>setProductInfo</method>
</options_observer>
</observers>
</controller_action_predispatch_checkout>
$deliveryDate = $prId['delivery_date'];
if (!empty($deliveryDate)) {
$opt['options'] = array($optionID => $deliveryDate);
$request->setParams($opt);
}
return $this;
添加选项的另一种方法是
$item->addOption(array(
'code' => 'additional_options',
'value' => serialize($additionalOptions),
));
假设您有以下选择
$option = array(
'title' => 'Auto Date & Time',
'type' => 'date_time',
'is_require' => 1,
'sort_order' => 0,
'is_delete' => '',
'previous_type' => '',
'previous_group' => '',
'price' => '0.00',
'price_type' => 'fixed',
'sku' => ''
);
直接获取$product->getOptionInstance()
$product->getOptionInstance()->addOption($option);
$product->setHasOptions(true); //mention that the product has custom options
删除自定义选项:
if($product->getOptions() != ''{
foreach ($product->getOptions() as $opt){
$opt->delete();
}
$product->setHasOptions(0)->save();
}
希望能帮助到你 !!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.