【发布时间】:2012-01-10 18:59:42
【问题描述】:
我正在尝试为 magento 编写一个观察者,当订单被标记为已发货并获得跟踪号时将触发该观察者。
当我通过管理员进入并下订单、开票然后发货时,我需要调用的功能实际上从未被调用过,我不明白为什么。
我浏览了 magento 网站上的几个页面,看看我可能做错了什么,但我就是想不通(http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/customizing_magento_using_event-observer_method & http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-2-the-magento-config)。
请注意,我确实在管理高级区域中看到了该模块,并且它已启用。
如果有人可以查看我所附的代码并告诉我问题出在哪里,将不胜感激。
这是我的 Observer 类,位于 app/code/local/WR/TrackingEmail/Model/Observer.php
class WR_TrackingEmail_Model_Observer
{
public function sendTrackEmail($observer)
{
$track = $observer->getEvent()->getTrack();
$shipment = $track->getShipment(true);
$shipment->sendEmail();
}
}
这是我的模块 config.xml
<config>
<global>
<modules>
<wr_trackingemail>
<version>0.1.1</version>
</wr_trackingemail>
</modules>
<events>
<sales_order_shipment_track_save_after>
<observers>
<Wr_trackingemail_model_observer>
<type>singleton</type>
<class>WR_TrackingEmail_Model_Observer</class>
<method>sendTrackEmail</method>
</Wr_trackingemail_model_observer>
</observers>
</sales_order_shipment_track_save_after>
</events>
</global>
</config>
这是我的应用程序/etc/modules/WR_TrackingEmail.xml
<config>
<modules>
<WR_TrackingEmail>
<active>true</active>
<codePool>local</codePool>
</WR_TrackingEmail>
</modules>
</config>
【问题讨论】:
-
<global>下的<modules>节点永远不会被评估,但它也不会产生任何负面影响。
标签: magento magento-1.4