Я создал модуль наблюдателя, который будет отправлять электронное письмо всякий раз, когда определенный продукт покупается и оплачивается. Чтобы заполнить это письмо, мне нужно получить адрес доставки, адрес фактуры и имя клиента для данного заказа. До сих пор мой Observer.php выглядит следующим образом:Magento 1.7.0.2 Получить информацию о заказе
<?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' => '[email protected]',
'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();
будут все, что мне нужно, но они возвращают большие объекты, а не простые строки, которые мне нужны.
Как получить данные о адресах и именах в простые строки, которые я могу вставить в электронное письмо?
Заранее спасибо.
}
Это прекрасно работало. Большое спасибо. единственное, что мне нужно сделать сейчас, это получить адрес электронной почты клиента. Я ожидал, что, чтобы быть частью адреса, я, наверное, не должен был. –