magento sales_order_place_after наблюдатель не работает - PullRequest
2 голосов
/ 29 ноября 2011

Я создал наблюдателя событий, который отправит письмо по завершении заказа. Я отправляю электронное письмо на email_address1, когда продукт заказывается из категории1, и отправляю электронное письмо на email_address2, когда продукт заказывается из категории2. Поэтому я создал для этого событие наблюдателя.

Но когда я нажимаю кнопку «Разместить заказ», ничего не происходит. В чем проблема?

в magento / app / etc / modules / Custom_Email.xml:

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

в magento / app / code / local / Custom / Email / 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 / app / code / local / Custom / Email / Model / Order / 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('addres@from.com');
    $emailTemplate->setTemplateSubject('Subject');
    $emailTemplate->send('to@addres.com','Name', $emailTemplateVariables);  
echo 'email sent';      
 }
 }
 ?>

Значит, кто-нибудь знает, в чем проблема?

1 Ответ

1 голос
/ 29 ноября 2011

Слой не существует в контексте заказа, а также категория, из которой был выбран продукт, не доступна как свойство цитаты или позиции заказа. Это известный недостаток Magento, который, к сожалению, ограничивает сегментацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...