我正在尝试编写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,最终得到了大量数据。有人能指出我正确的方向来获取订单的送货地址吗?
谢谢!
答案 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());