2012-11-26 85 views
1

您好我想在oder完成或關閉時捕獲訂單信息。我嘗試不同的事件,如(sales_order_place_after)但未完成我的要求。我正在完成訂單窗體管理員側捕獲在magento觀察員的訂單完成狀態

<events> 
     <sales_order_place_after> 
     <observers> 
      <extra_options>    
       <class>My_Module_Model_Observer</class> 
       <method>salesConvertQuoteItemToOrderItem</method> 
      </extra_options> 
     </observers> 
      </sales_order_place_after> 
    </events> 

觀察:

public function salesConvertQuoteItemToOrderItem($observer) 
    { 

     $order = $observer->getOrder(); 
     $orders = $observer->getEvent()->getOrder(); 

     if($order->getState() == Mage_Sales_Model_Order::STATE_COMPLETE){ 
     echo "<pre>"; 
     print_r($orders);exit; 
     } 
    } 

誰能幫助我捕捉的信息,如 的Xml創建觀察員?在此先感謝

回答

2

除了您正在聽錯事件,您正在做的一切正確。您必須改用sales_order_save_after

+0

謝謝Tim對我的工作。 –

+0

這是行不通的,因爲您需要檢查訂單狀態是否發生變化,因爲如果您保存訂單並且尚未完成,上述代碼將始終觸發。 –

2

使用sales_order_save_after還是不錯的,但它只是需要你也來檢查狀態(米沙建議):

public function salesOrderSaveAfter($observer) 
{  
    $order = $observer->getEvent()->getOrder(); 
    if($order->getState() != Mage_Sales_Model_Order::STATE_COMPLETE) { 
     return $this; 
    }  

    if($order->getData('state') == $order->getOrigData('state')) { 
     return $this; 
    } 

    // do your stuff 

    return $this; 
} 

這工作對我很好。