4

我需要使用 ajax 更新自定义选项值。我正在尝试更新它

$params = $this->getRequest()->getParams();
    $itemID = $params['item'];
    $item =         Mage::getSingleton('checkout/session')->getQuote()->getItemById($itemID);
    $options = $item->getOptions();

    foreach ($options as $option) {

        if(strtolower($option->getCode()) == 'info_buyRequest')
        {
            $unserialized = unserialize($option->getValue());
            $unserialized['options'][216]= 'New Value';
            $option->setValue(serialize($unserialized));

        }
    }
    $item->save();

任何人都可以帮助我了解这里出了什么问题。谢谢

4

2 回答 2

2

这永远不可能是真的:

(strtolower($option->getCode()) == 'info_buyRequest')

此外,我还必须编辑特定保存的自定义选项。我的循环如下所示:

foreach ($options as $option) {
  switch (true) {
    case (strtolower($option->getCode()) == 'info_buyrequest') :
      $unserialized = unserialize($option->getValue());
      $unserialized['options'][216] = 'NEW VALUE';
      $option->setValue(serialize($unserialized));
      break;
    case ($option->getCode() == "option_216") :
      $option->setValue('NEW VALUE');
      break;
  }
}
于 2012-09-26T21:05:52.767 回答
1

Pravin 让它与下面的代码行一起工作。

$item->setOptions($options)->save(); 
Mage::getSingleton('checkout/cart')->save();

感谢 p4pravin 的分享。

于 2012-07-26T13:55:38.260 回答