3

Magentoのオブザーバーフックを使用して、注文保存プロセスにフックしています。注文が完了して保存されるように設定された後、Webサービスにメッセージを送信したいと思います。

ただし、Webサービスが重複した注文アイテムを受け取ることがよくあることに気づきました。

これが私のコードの簡略化されたバージョンであり、問​​題を示しています。

<?php 
class Name_Modulename_Model_Observer {


public function sales_order_save_commit_after($observer) {

    // Gets the order which is being saved.
    $order  = $observer->getOrder();

    $status = $order->getStatus();

    if($status != "complete") {
        continue;
    }

    // PROBLEM - The number of Mage_Sales_Model_Order_Item 
    // in this array sometimes does not correspond with the 
    // The number of items in the basket. 
    $items = $order->getAllItems();

    $itemsInOrder = array();

    foreach($items as $item) {

        $product = $item->getProduct();

        $itemsInOrder[] = $product->name;

    }

    // At the end of the loop $itemsInOrder can contain 
    // multiple name entries for the same line item. Why is this? 

}

}

?>
4

1 に答える 1

6

注文に構成可能な製品が含まれている場合、返されるコレクションに$order->getAllItems(); は親製品子製品が含まれるため、この製品タイプの要素数が 2 倍になります。使用する方が安全です$order->getAllVisibleItems()

于 2013-01-25T17:07:28.577 に答える