在magento的observer中捕获订单完成状态

在magento的observer中捕获订单完成状态,magento,Magento,您好,我想在订单完成或关闭时获取订单信息。我尝试了不同的事件,如销售、订单、地点等,但没有完成我的要求。我正在从管理端完成订单,我创建了一个观察者来捕获信息,如 Xml: 观察员: public function salesConvertQuoteItemToOrderItem($observer) { $order = $observer->getOrder(); $orders = $observer->getEvent()->ge

您好,我想在订单完成或关闭时获取订单信息。我尝试了不同的事件,如销售、订单、地点等,但没有完成我的要求。我正在从管理端完成订单,我创建了一个观察者来捕获信息,如 Xml:

观察员:

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;
        }
    }

有人能帮忙吗?提前感谢

你做的一切都是对的,只是你听到的是错误的事件。你必须改用“销售订单保存”来代替。

你做的每件事都是对的,只是听到的是错误的事件。您必须改用sales\u order\u save\u after。

使用sales\u order\u save\u after仍然很好,但它只需要您检查状态,正如Misha所建议的:


这对我来说很好。

使用sales\u order\u save\u after仍然很好,但它只需要您检查状态,就像Misha建议的那样:


这对我来说很好。

这不起作用,因为您需要检查订单状态是否已更改,因为如果您保存订单且订单尚未完成,上述代码将始终触发。这不起作用,因为您需要检查订单状态是否已更改,因为,如果您保存订单并且订单尚未完成,则始终会触发上述代码。
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;
        }
    }
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;
}