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 に答える