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

gre*_*dev 2 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试在所有这些变量上做一个print_r,最后得到了大量的数据.有人能指出我正确的方向获取订单的送货地址吗?

谢谢!

Jür*_*len 8

许多Magento对象都是基于的Varien_Object,它有一个方法被调用getData()来获取对象的通常有趣的数据(不包括大量其他的,但主要是无用的数据).

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

$shipping_address = $order->getShippingAddress();
var_dump($shipping_address->getData());
Run Code Online (Sandbox Code Playgroud)

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

$shipping_address = $order->getShippingAddress();
var_dump(
    $shipping_address->getFirstname(),
    $shipping_address->getLastname(),
    $shipping_address->getCity()
);
Run Code Online (Sandbox Code Playgroud)

要理解它是如何工作的,我建议让自己更加熟悉Varien_Object和阅读一些关于PHP的魔术方法,如__call(),__get()__set().