UPDATED 05/08/2011 *
我是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'时发送电子邮件,我只是在minuite进行调试。
我的代码如下,订单付款时没有收到电子邮件
应用程序的/ etc /模块/ Juno_Sales.xml
<?xml version="1.0"?>
<config>
<modules>
<Juno_Finalise>
<active>true</active>
<codePool>local</codePool>
</Juno_Finalise>
</modules>
</config>
应用程序/代码/本地/朱诺/销售的/ 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
*/
}
}
?>
非常感谢任何帮助。
非常感谢
伊恩
答案 0 :(得分:4)
您的班级Juno_Finalise_Model_Observer
应为Juno_Finalise_Model_Order_Observer
。