2013-12-06 2 views
0

Я создал модуль наблюдателя, который будет отправлять электронное письмо всякий раз, когда определенный продукт покупается и оплачивается. Чтобы заполнить это письмо, мне нужно получить адрес доставки, адрес фактуры и имя клиента для данного заказа. До сих пор мой 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(); будут все, что мне нужно, но они возвращают большие объекты, а не простые строки, которые мне нужны.

Как получить данные о адресах и именах в простые строки, которые я могу вставить в электронное письмо?

Заранее спасибо.

} 

ответ

1

Попробуйте

$ заказе запасного> getBillingAddress() -> формат ('HTML')

Кроме того, было бы лучше, если вы с помощью Magento транзакций электронной почты, возьмите смотрите @magento sending custom emails

+0

Это прекрасно работало. Большое спасибо. единственное, что мне нужно сделать сейчас, это получить адрес электронной почты клиента. Я ожидал, что, чтобы быть частью адреса, я, наверное, не должен был. –

0

Вы можете получить адрес электронной почты, как это:

'Email:' . print_r($order->getCustomerEmail(), true) 
Смежные вопросы