Magento - 从订单或发票中获取数据

时间:2011-11-22 09:57:50

标签: magento magento-1.4

我正在尝试编写Magento(CE 1.4)扩展程序,以便在订单付款后导出订单数据。我已经建立了一个挂钩到sales_order_invoice_save_after事件的观察者,并且它正常工作 - 我的函数在生成发票时执行。但是我无法获得有关订单的信息,例如送货地址,帐单地址,订购商品,订单总数等。

这是我的尝试:

class Lightbulb_Blastramp_Model_Observer {
    public function sendOrderToBlastramp(Varien_Event_Observer $observer) {
        $invoice = $observer->getEvent()->getInvoice();
        $order = $invoice->getOrder();

        $shipping_address = $order->getShippingAddress();
        $billing_address = $order->getBillingAddress();
        $items = $invoice->getAllItems();
        $total = $invoice->getGrandTotal();

        return $this;
    }
}

我尝试在所有这些变量上执行print_r,最终得到了大量数据。有人能指出我正确的方向来获取订单的送货地址吗?

谢谢!

2 个答案:

答案 0 :(得分:8)

许多Magento对象都基于Varien_Object,它有一个名为getData()的方法,只能获得对象通常感兴趣的数据(不包括大量其他数据,但主要是无用数据)。

使用您的代码,您可以立即获取所有数据:

$shipping_address = $order->getShippingAddress();
var_dump($shipping_address->getData());

或直接针对特定的单个属性,如下所示:

$shipping_address = $order->getShippingAddress();
var_dump(
    $shipping_address->getFirstname(),
    $shipping_address->getLastname(),
    $shipping_address->getCity()
);

要了解其工作原理,我建议您更熟悉Varien_Object,并阅读一些关于PHP magic methods的内容,例如__call()__get()__set()

答案 1 :(得分:1)

尝试print_r($shipping_address->toArray());