2011-11-22 46 views
2

我试图编写一个Magento(CE 1.4)扩展程序来导出订单数据,一旦支付了订单。我建立了一个观察器,它挂接到sales_order_invoice_save_after事件,并且这个工作正常 - 当生成发票时,我的函数被执行。但我遇到了麻烦订单的相关信息,如送货地址,账单地址,项目有序,订单总额等Magento - 从订单或发票获取数据

这是我的尝试:

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所有这些变量,并最终获得大量的数据。有人能指出我获得订单送货地址的正确方向吗?

谢谢!

回答

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()

+0

非常感谢,这正是我所需要的。 – gregdev

1

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