首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento 1.7.0.2获取订单信息

Magento 1.7.0.2获取订单信息
EN

Stack Overflow用户
提问于 2013-12-06 16:05:20
回答 2查看 321关注 0票数 0

我已经创建了一个观察员模块,它将在购买和支付某一产品时发送一封电子邮件。为了填充该电子邮件,我需要检索给定订单的托运地址、计费地址和客户名称。到目前为止,我的Observer.php如下所示:

代码语言:javascript
复制
<?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();将是我所需要的全部,但是它们返回大对象,而不是我需要的简单字符串。

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

提前谢谢你。

代码语言:javascript
复制
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-06 17:12:34

试一试

$order->getBillingAddress()->format('html')

另外,如果您使用magento事务性电子邮件,查看@ magento发送自定义电子邮件会更好

票数 1
EN

Stack Overflow用户

发布于 2013-12-12 05:48:21

你可以得到这样的电子邮件地址:

代码语言:javascript
复制
'Email:' . print_r($order->getCustomerEmail(), true)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20428400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档