1

嗨,我想在订单完成或关闭时捕获订单信息。我尝试了不同的事件,例如 (sales_order_place_after),但没有完成我的要求。我正在完成订单表单管理端并创建观察者来捕获 Xml 等信息:

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

任何人都可以帮忙吗?提前致谢

4

2 回答 2

2

使用 sales_order_save_after 仍然很好,但它只需要您还检查状态(如 Mischa 建议的那样):

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

这对我来说很好。

于 2013-08-02T08:42:53.347 回答
2

除了收听错误的事件之外,您所做的一切都是正确的。你必须sales_order_save_after改用。

于 2012-11-26T09:28:08.970 回答