Magento 1.7.0.2获取订单信息

时间:2013-12-06 16:05:20

标签: php oop magento object

我创建了一个观察员模块,只要购买并支付某个产品,就会发送电子邮件。为了填充该电子邮件,我需要检索给定订单的送货地址,帐单地址和客户名称。到目前为止,我的Observer.php看起来像这样:

<?php
class Electricjesus_Notifyowner_Model_Observer {
    public function notifyOwnerEvent($observer) {

        $invoice = $observer->getInvoice();

        // derivative data
        $order = $invoice->getOrder(); // Mage_Sales_Model_Order
        $items = $order->getAllItems();

        $i = 0;
        foreach($items as $item) {
            $skus[$i] = $item->getSku();
            $i++;
        }
        $needle = 'train-01';

        if( in_array( $needle, $skus ) ) {

            ob_start();
            var_dump($skus);
            $skuDump = ob_get_clean();
            $filedump = '$skuDump: ' . $skuDump . "\n" . '------------------------------' . "\n";

            $shipAddr = $order->getBillingAddress();
            ob_start();
            var_dump($shipAddr);
            $shipAddrDump = ob_get_clean();
            $filedump .= '$shipAddrDump: ' . $shipAddrDump . "\n" . '------------------------------' . "\n";

            $billAddr = $invoice->getShippingAddress();
            ob_start();
            var_dump($billAddr);
            $billAddrDump = ob_get_clean();
            $filedump .= '$billAddrDump: ' . $billAddrDump . "\n" . '------------------------------' . "\n";

            $custName = $order->getCustomerName();
            ob_start();
            var_dump($custName);
            $custNameDump = ob_get_clean();
            $filedump .= '$custNamedump: ' . $custNameDump;

            file_put_contents('observer_log.txt', $filedump);

            $email = array(
                'to' => 'daniel@danielclarke.ca',
                'subject' => 'Confirmed Purchase',
                'message' => "
                    <html>
                        <body>
                            ". $custName ." has ordered and paid for the following products.
                            <table>
                                <th>
                                    <td>
                                        Items Ordered
                                    </td>
                                    <td>
                                        Shipping Address
                                    </td>
                                    <td>
                                        Billing Address
                                    </td>
                                </th>
                                <tr>
                                    <td>
                                        ". $skuDump ."
                                    </td>
                                    <td>
                                        ". $shipAddr ."
                                    </td>
                                    <td>
                                        ". $billAddr ."
                                    </td>
                                </tr>
                            </table>
                        </body>
                    </html>",
                'headers' => 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=iso-8859-1' . "\r\n" . 'From: Ashop.in Store'
            ); 

            //mail($email['to'], $email['subject'], $email['message'], $email['headers']);
        }

        return $this;  // always return $this.
    }

我已经注释掉实际发送电子邮件的行,而不是简单地输出到文件,因为它涉及到对象中的大量信息,因为它更快更容易。我认为$shipAddr = $order->getBillingAddress(); $billAddr = $invoice->getShippingAddress();$custName = $order->getCustomerName();将是我所需要的,但它们会返回大对象,而不是我需要的简单字符串。

如何将地址和名称输出转换为可插入电子邮件的简单字符串?

提前谢谢。

}

2 个答案:

答案 0 :(得分:1)

尝试

  

$命令 - &GT; getBillingAddress() - &GT;格式( 'HTML')

如果你使用magento交易电子邮件会更好,看看@ magento sending custom emails

答案 1 :(得分:0)

您可以获得如下的电子邮件地址:

'Email:' . print_r($order->getCustomerEmail(), true)