Magento - получение данных из заказа или счета - PullRequest
2 голосов
/ 22 ноября 2011

Я пытаюсь написать расширение 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;
    }
}

Iпопытался сделать print_r для всех этих переменных, и в итоге получил много данных обратно.Может ли кто-нибудь указать мне правильное направление для получения адреса доставки заказа?

Спасибо!

Ответы [ 2 ]

8 голосов
/ 22 ноября 2011

Многие объекты 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 магических методах , таких как __call(), __get() и __set() .

1 голос
/ 22 ноября 2011

Попробуйте print_r($shipping_address->toArray());

...