如何在客户下订单时将订单放置数据保存在自定义表中以及Magento默认表中



我想保存客户在magento下订单时的所有数据(客户,产品,账单地址等)到另一个数据库平面表中。请帮帮忙。

谢谢

为此您需要创建一个模块。

app/etc/modules/Tech_Order.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Tech_Order>
            <active>true</active>
            <codePool>community</codePool>
        </Tech_Order>
    </modules>
</config>

创建模块配置文件app/code/community/Tech/Order/etc/config.xml。如下:

<?xml version="1.0"?>
<config>
    <modules>
        <Tech_Order>
            <version>1.0.0</version>
        </Tech_Order>
    </modules>
    <global>
        <events>
             <sales_order_place_after>
                <observers>
                   <order_capture>
                      <type>singleton</type>
                      <class>Tech_Order_Model_Observer</class>
                      <method>captureOrder</method>
                   </order_capture>
                </observers>
             </sales_order_place_after>          
        </events>
    </global>
</config>

创建捕获命令app/code/community/Tech/Order/Model/Observer.php的Observer文件

class Tech_Order_Model_Observer {
    public function captureOrder(Varien_Event_Observer $observer) {
        $_order     = $observer->getEvent()->getOrder();
        $orderObj   = Mage::getModel("sales/order")->load($_order->getId());
        $orderId    = $_order->getRealOrderId();
        $items      = $orderObj->getAllItems(); 
        $billingAddress = $_order->getBillingAddress();
        $shipingAddress = $_order->getShippingAddress();
        foreach($items as $item) {
            $sku = $item->getData('sku');
            $qty        = (int) $item->getQtyOrdered();
            $price      = $item->getprice();
        }
        Mage::log('Order Data -- ' . $orderObj->getData());     
        Mage::log('Billing Address -- '. $billingAddress->getData());       
        Mage::log('Shipping Address -- '. $shipingAddress->getData());      
    }
}

captureOrder是捕获订单的所有信息并保存在数据库中的功能。

最新更新