Magento - 获取< getLastRealOrderId'一旦下订单

时间:2015-11-03 12:20:26

标签: magento

订单放入我的magento商店后,我有一个自定义模块,以便我可以将订单号保存到外部数据库表中。

我的自定义模块设置为:

自定义/ ExternalOms / config.xml中

所以我加入了sales_order_place_after事件

    <?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Custom_ExternalOms>
            <version>0.0.1</version>
        </Custom_ExternalOms>
    </modules>
    <global>
        <models>
            <custom_externaloms>
                <class>Custom_ExternalOms_ExternalOms</class>
            </custom_externaloms>
        </models>
        <events>
            <sales_order_place_after>
                <observers>
                    <custom_externaloms>
                        <type>model</type>
                        <class>Custom_ExternalOms_Model_ExternalOms</class>
                        <method>exportToOMS</method>
                    </custom_externaloms>
                </observers>
            </sales_order_place_after>
       </events>
    </global>
</config>

自定义/ ExternalOms /型号/ ExternalOms.php

并运行我的功能:

class Custom_ExternalOms_Model_ExternalOms extends Mage_Core_Model_Abstract
{
    public function exportToOMS()
    {
        $_order_number = Mage::getSingleton('checkout/session')->getLastRealOrderId();

        // remaining code..
    }
}

一旦订单正确放置,代码就会运行但是:

Mage::getSingleton('checkout/session')->getLastRealOrderId();

即将出现

1 个答案:

答案 0 :(得分:0)

 Replace your event by this code 
        <events>
                    <sales_order_place_after>
                        <observers>
                            <custom_externaloms>
                                <type>model</type>
                                <class>externaloms/externalOms</class>
                                <method>exportToOMS</method>
                            </custom_externaloms>
                        </observers>
                    </sales_order_place_after>
               </events>


        ExternalOms file by this

            class Custom_Externaloms_Model_ExternalOms {
            public function exportToOMS($observer)
                {
                   $observer->getOrder();

                    // remaining code..
                }

            }
     /*     in case $observer->getOrder(); will not work than use 
                  Mage::getSingleton('checkout/session')->getLastOrderId(); for getting last order id and load order
            */
    I hope it will work