Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento-如何从购物车中的产品中添加或删除自定义选项?_Magento_Edit_Cart - Fatal编程技术网

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

Magento-如何从购物车中的产品中添加或删除自定义选项?,magento,edit,cart,Magento,Edit,Cart,我正在尝试在购物车中添加或删除产品的自定义选项。自定义选项是在后端针对产品本身定义的,我不想动态地创建一个新的自定义选项或诸如此类的东西。我的所有自定义选项都是单个复选框,以防有所不同 我在checkout\u cart\u update\u items\u上使用一个观测者,在Mage::getSingleton('checkout/session')->getQuote()->getAllItems()中循环。我可以通过使用查看当前选择了自定义选项的项目 $orderOptions = $it

我正在尝试在购物车中添加或删除产品的自定义选项。自定义选项是在后端针对产品本身定义的,我不想动态地创建一个新的自定义选项或诸如此类的东西。我的所有自定义选项都是单个复选框,以防有所不同

我在
checkout\u cart\u update\u items\u上使用一个观测者,在
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))


我两个都不能工作,我肯定我只是错过了一些非常简单的东西。您能提供帮助吗?

如果您想在报价项目中动态指定自定义产品选项(例如:添加订单中每个产品的交货日期),您可以使用观察者添加自定义选项

例如:

<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;
假设您有以下选项

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

希望对你有帮助

是否要在报价项目中动态指定自定义产品选项?我想在购物车中的自定义选项旁边添加一个复选框,我已经这样做了。如果客户解开箱子并单击“更新购物车”,我想从购物车项目中删除自定义选项。我可以检测到客户在我的观察者中打开箱子,并检测他们希望更改的购物车项目。在编辑产品时,自定义产品选项本身在后端指定。谢谢!删除自定义选项的代码工作起来就像做梦一样。我正在为购物车中的项目添加一个选项,您的代码告诉我错误
致命错误:对非对象调用成员函数addOption()
。你还能帮忙吗?我现在让他们两个都工作,但他们只工作一次!如果我添加了一个选项,我将无法删除它;如果我删除了一个选项,我将无法添加一个新选项。我想我有点做错了,我会弄明白的,但你肯定给了我一个很好的开始。谢谢
if($product->getOptions() != ''{
  foreach ($product->getOptions() as $opt){
     $opt->delete(); 
   } 
 $product->setHasOptions(0)->save();
}