Magento - 正在侦听订单状态更改的扩展

时间:2015-01-27 13:54:11

标签: php magento

我正在使用Magento 1.9.0.1。

我正在尝试创建一个非常简单的扩展程序,它正在侦听订单状态更改。

这是我到目前为止所做的:

文件:/VivasIndustries / SMSNotification / etc / config.xml:

<?xml version="1.0"?>
<config>
  <modules>
    <VivasIndustries_SmsNotification>
      <version>0.1.0</version>
    </VivasIndustries_SmsNotification>
  </modules>
  <global>
    <events>
        <sales_order_save_after>
            <observers>
                <vivasindustries_smsnotification>
                    <class>smsnotification/observer</class>
                    <method>orderSaved</method>
                </vivasindustries_smsnotification>
            </observers>
        </sales_order_save_after>
    </events>
  </global>

文件:/VivasIndustries/SmsNotification/Model/Observer.php:

<?PHP
class VivasIndustries_SmsNotification_Model_Observer
{
    public function orderSaved(Varien_Event_Observer $observer)
    {
        Mage::log("Test")
    }
}

文件:/app/etc/modules/VivasIndustries_SmsNotification.xml:

<?xml version="1.0"?>
<config>
  <modules>
    <VivasIndustries_SmsNotification>
      <active>true</active>
      <codePool>community</codePool>
      <version>0.1.0</version>
    </VivasIndustries_SmsNotification>
  </modules>
</config>

我已按照本指南完成了所有工作:http://www.danielhanly.com/blog/observing-order-status-changes-magento/

问题是,当我签出我的system.log文件时,没有“Test”的行或文本。它似乎没有在日志文件中插入这个文本,这让我觉得它在我更改订单状态/保存订单时无法识别。

你能指出我的错误在哪里帮助我解决这个问题。

提前致谢!

2 个答案:

答案 0 :(得分:0)

尝试在事件节点中添加如下所示的类型:

<events>
        <sales_order_save_after>
            <observers>
                <vivasindustries_smsnotification>
<type>model</type>
                    <class>smsnotification/observer</class>
                    <method>orderSaved</method>
                </vivasindustries_smsnotification>
            </observers>
        </sales_order_save_after>
    </events>

此外,要检查您的代码是否正常工作,请添加echo'thing';退出;在你的观察者功能。转到后端并取消任何订单。这也应该调度您的功能,因为订单状态将更改为已取消。

答案 1 :(得分:0)

你的观察者模型和app / etc / modules / xml文件是正确的。您需要将config.xml中的config.xml更改为以下内容:

<?xml version="1.0"?>
<config>
    <modules>
        <VivasIndustries_SmsNotification>
            <version>0.1.0</version>
        </VivasIndustries_SmsNotification>
    </modules>
    <global>
        <events>
            <sales_order_save_after>
                <observers>
                    <smsnotification>
                        <type>model</type>
                        <class>VivasIndustries_SmsNotification_Model_Observer</class>
                        <method>orderSaved</method>
                    </smsnotification>
                </observers>
            </sales_order_save_after>
        </events>
    </global>
</config>

还建议您可以在Model Observer.php中删除明确提到的对象类型

你可以通过:

public function orderSaved($ observer)