2011-11-29 54 views
2

我已經創建了一個事件觀察者,它將在訂單完成時發送電子郵件。 當從類別1訂購產品並且在從產品2訂購產品時將電子郵件發送到email_address2時,我正在向email_address1發送電子郵件。因此我爲此創建了一個觀察者事件。magento sales_order_place_after觀察員不工作

但是,當我點擊「下單」按鈕時,什麼也沒有發生。問題是什麼?

在Magento /應用程序的/ etc /模塊/ Custom_Email.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Custom_Email> 
      <codePool>local</codePool> 
      <active>true</active> 
     </Custom_Email> 
    </modules> 
</config> 
在Magento

/應用/代碼/本地/自定義/電子郵件的/ etc/config.xml文件:

<?xml version="1.0"?> 
<config> 
    <global> 
     <models> 
      <customemail> 
       <class>Custom_Email_Model</class> 
      </customemail> 
     </models> 
<events> 
     <sales_order_place_after> 
      <observers> 
       <custom_email_order_observer> 
        <type>singleton</type> 
        <class>customemail/order_observer</class> 
        <method>sendOrder</method> 
       </custom_email_order_observer> 
      </observers> 
     </sales_order_place_after> 
    </events> 
     </global> 
</config> 

在Magento /應用/代碼/本地/自定義/電子郵件/型號/訂購/ Observer.php:

<?php 
class Custom_Email_Model_Order_Observer 
{ 
    public function __contruct() 
    { 

    } 

    /** 
    * Exports new orders to an xml file 
    * @param Varien_Event_Observer $observer 
    * @return Feed_Sales_Model_Order_Observer 
    */ 
public function sendOrder($observer){ 
    $order = $observer->getEvent()->getOrder(); 
    $cat_id = Mage::getModel('catalog/layer')->getCurrentCategory()->getId(); 
    echo $cat_id; 
      //Implement logic here 
      ... 

    $emailTemplate = Mage::getModel('core/email_template') 
        ->loadDefault('rehab');        
    $emailTemplateVariables = array(); 
    $emailTemplateVariables['order'] = $order;  
    $emailTemplate->setSenderName('Your shops name'); 
    $emailTemplate->setSenderEmail('[email protected]'); 
    $emailTemplate->setTemplateSubject('Subject'); 
    $emailTemplate->send('[email protected]','Name', $emailTemplateVariables); 
echo 'email sent';  
} 
} 
?> 

因此,任何一個知道問題出在哪裏?

+2

你檢查過你的觀察員嗎? (舉個例子)。你的日誌裏有什麼嗎? – OSdave

+0

@sidrasultana:請更精確地定義「沒有任何反應」。 –

+0

@OSdave:我將如何檢查我的觀察員被稱爲? – Ahmad

回答

1

圖層在訂單上下文中不存在,也不是從中選擇產品的類別作爲報價或訂單商品的屬性。這是Magento的一個已知缺陷,不幸的是限制了細分。

+1

同意,但這並不能解釋爲什麼點擊「下訂單」後「沒有任何反應」。目前我們甚至不知道鉤子是否到達。 OP沒有*回答OSdave對此的疑問。也許OP在發送事件之前有一個Ajax錯誤的方式^^ –

+0

同意,Jürgen,儘管這篇文章是http://stackoverflow.com/questions/8265989/how-to-send-category-based-order -emails-in-magento(這個問題在那裏鏈接)。你的建議是正確的,所以我+1了它:-) – benmarks