私はオーダーが行われたらカートの各アイテムに(a)シリアルキーを追加する必要があるオブザーバーに取り組んでいます。アイテムを更新した後に商品を注文しました
私はイベントsales_model_service_quote_submit_successを今聞いています。
私は注文にアクセスし、アイテムのリストを取得し、それらを反復して、製品オプションを得ることができました。私のコードは、setProductOptionsを試みたり保存したりするときに失敗します。どちらがどちらかというとわかりません。私は忘れたり、間違ってやっていること
// Get access to order information
$lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
$order = Mage::getModel('sales/order')->load($lastOrderId);
// Get the items from the order
$items = $order->getAllItems();
foreach ($items as $item)
{
// Pretend here is the call that fetches the serial keys for this item and stores them in $keyString
// If we actually received the keys in a string, store them with the item
if (!empty($keyString))
{
$productOptions = array();
if (count($item->getProductOptions()))
{
$productOptions = $item->getProductOptions();
}
$productOptions['keys'] = $keyString;
$item->setProductOptions($productOptions);
$item->save();
}
}
任意のアイデア:ここ
は、関連するコードですか?本当にありがとう。
あなたのご意見をいただきありがとうございます。私はこのアプローチについて2つの考えを持っています。まず、イベントはうまくディスパッチされていたので、オブザーバーが使用されていないわけではありません。イベントの問題です。次に、キーを顧客にリリースする前に注文が成功したことを確認する必要があるため、注文、変更、再保存は基本的に不可避です。 –
Antonあなたが私に言ったことのいくつかは、自分の状況に合っていませんでしたが、order変数にアクセスするための新しいコード行が働いていました($ order = $ observer-> getEvent() - > getOrder();)。私はなぜ可変構造が異なっているのか、あるいは異なるアクセス権を持っているのかよくわかりませんが、変数にアクセスするこの新しい方法がこのトリックでした。私の問題を調べる時間をとってくれてありがとう! –
@Antonあなたが言及したように、このようなオブザーバsales_model_service_quote_submit_successはありませんが、私はこのオブザーバをapp/code/core/Mage/CatalogInventory/etc/config.xmlで見つけました。これについて何か説明がありますか? – shashank