我正在使用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”的行或文本。它似乎没有在日志文件中插入这个文本,这让我觉得它在我更改订单状态/保存订单时无法识别。
你能指出我的错误在哪里帮助我解决这个问题。
提前致谢!
答案 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)