Magento - 如何在购物车中的产品中添加或删除自定义选项?

时间:2014-05-27 10:18:52

标签: magento edit 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->addOption(array('code'=>$optionCode, 'value'=>1));

我无法上班,而且我确定我只是错过了一些非常简单的事情。你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

如果要在报价项目上即时指定自定义产品选项(例如:在订单中为每个产品添加交货日期),您可以使用观察者添加自定义选项。

示例:

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

希望它有所帮助!!!