【发布时间】:2011-08-04 16:12:23
【问题描述】:
2011 年 5 月 8 日更新 *
我是 magento 的新手,并试图创建一个将在支付订单时触发的观察者。目前观察者只是发送一封电子邮件,但我将在未来对此进行扩展,但我需要先让代码正常工作。
我正在使用 Magento 1.5.1.0 并查看了事件挂钩 cheatsheat @ http://www.nicksays.co.uk/magento_events_cheat_sheet/ 我可以看到我想要挂钩的事件是
'sales_order_payment_pay'
从
发出'app/code/local/Mage/Sales/Model/Order/Payment.php'.
因为我已经覆盖了核心文件夹中的文件
阅读大量文章后,我了解到我需要创建 3 个文件,如下所示
app/etc/modules/PackageName_ModuleName.xml -> 包含说明模块所在位置的 xml 文件
app/code/local/PackageName/ModuleName/etc/config.xml -> 其中 将观察者附加到已调度的“sales_order_payment_pay”事件
app/code/local/PackageName/ModuleName/Model/Observer.php -> 由一个类组成,该类包含一个在 'sales_order_payment_pay 事件被触发时由 config.xml 调用的方法。
这是我创建的文件和目录中的文件,当触发“sales_order_payment_pay”时,代码将被扩展以做更多的事情,我只是在调试。
我的代码如下,订单付款没有收到邮件
app/etc/modules/Juno_Sales.xml
<?xml version="1.0"?>
<config>
<modules>
<Juno_Finalise>
<active>true</active>
<codePool>local</codePool>
</Juno_Finalise>
</modules>
</config>
app/code/local/Juno/Sales/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Juno_Sales>
<version>0.1.0</version>
</Juno_Sales>
</modules>
<global>
<models>
<junofinalise>
<class>Juno_Sales_Model</class>
</junofinalise>
</models>
<events>
<sales_order_payment_pay>
<observers>
<juno_sales_order_observer>
<type>singleton</type>
<class>junofinalise/order_observer</class>
<method>finaliseJunoOrder</method>
</juno_sales_order_observer>
</observers>
</sales_order_payment_pay>
</events>
</global>
</config>
app/code/local/Juno/Sales/Model/Order/Observer.php
<?php
Mage::log(__FILE__);
class Juno_Finalise_Model_Order_Observer
{
public function finaliseJunoOrder($event)
{
mail('ian.cassidy1404@gmail.com','call_juno_api','now call juno api');
/*
Sale has now been processed and is paid for, function needs modifying to call juno api
*/
}
}
?>
任何帮助将不胜感激。
非常感谢
伊恩
【问题讨论】:
标签: xml events magento observer-pattern