Xml 订单付款时未调用Magento Observer
更新日期:2011年5月8日* 我是magento的新手,尝试创建一个在订单付款时触发的观察者。现在,观察员只是发送了一封电子邮件,但我将在未来对此进行扩展,但我需要让代码首先工作 我使用的是Magento 1.5.1.0,查看了事件挂钩cheatsheat@I可以看出我想要挂钩的事件是 “销售、订单、付款、付款” 那是从Xml 订单付款时未调用Magento Observer,xml,events,magento,observer-pattern,Xml,Events,Magento,Observer Pattern,更新日期:2011年5月8日* 我是magento的新手,尝试创建一个在订单付款时触发的观察者。现在,观察员只是发送了一封电子邮件,但我将在未来对此进行扩展,但我需要让代码首先工作 我使用的是Magento 1.5.1.0,查看了事件挂钩cheatsheat@I可以看出我想要挂钩的事件是 “销售、订单、付款、付款” 那是从 'app/code/local/Mage/Sales/Model/Order/Payment.php'. 因为我已经在核心文件夹中重写了文件 在阅读了大量文章后,我了解到我
'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->which
将观察者附加到已发送的“销售\订单\付款\付款”事件
app/code/local/PackageName/ModuleName/Model/Observer.php->由一个类组成,该类包含一个在触发“销售\订单\付款\付款”事件时由config.xml调用的方法
这里是我创建的文件和文件所在的目录,当触发“销售\订单\付款\付款”时,代码将被扩展以不仅仅发送电子邮件,我只是在现场调试
我的代码如下,没有收到订单付款的电子邮件
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
*/
}
}
?>
任何帮助都将不胜感激
非常感谢
伊恩你们班的朱诺·最终定稿·模型·观察者应该是朱诺·最终定稿·模型·秩序·观察者。你们班的朱诺·最终定稿·模型·观察者应该是朱诺·最终定稿·模型·秩序·观察者。您好,我试过了,但还是没有运气,您认为这是因为观察者需要与发送事件i的文件位于同一目录中。观察者肯定不需要位于同一目录中。让我们确保正确加载您的模块。在管理中,转到系统>缓存管理,并在调试期间关闭所有缓存。安装并检查您的已列出。也可以转到系统>配置>开发人员并打开日志记录,然后在观察者文件的顶部放置Mage::log__;u file__;-查看var/log/system.log文件,查看该文件是否已被读取。很抱歉,1。我已关闭所有缓存2。模块已安装,显示3。没有向核心文件写入任何内容,因此我假设从未调用过observer。我已将上面的代码更新为现在的样子,我确实注意到dispatch事件来自app/code/local/Mage/Sales/Model/Order/Payment.php,它覆盖了核心文件。这可能是它不起作用的原因吗?感谢您的帮助,我看到您已将Finalize的一些实例更改为Sales。记住在任何地方都要这样做,包括类名,类名必须与两个XML文件中的路径名和模块名相匹配。我从来不知道事件失败仅仅是因为它是从本地目录发送的,重写应该没有任何效果。您是否尝试过在您认为事件发生的位置放置断点或其他Mage::log?您好,我已经尝试过了,但仍然没有成功,您认为这是因为观察者需要与发送事件i的文件位于同一目录中。观察者肯定不需要位于同一目录中。让我们确保正确加载您的模块。在管理中,转到系统>缓存管理,并在调试期间关闭所有缓存。安装并检查您的已列出。也可以转到系统>配置>开发人员并打开日志记录,然后在观察者文件的顶部放置Mage::log__;u file__;-查看var/log/system.log文件,查看该文件是否已被读取。很抱歉,1。我已关闭所有缓存2。模块已安装,显示3。没有向核心文件写入任何内容,因此我假设从未调用过observer。我已将上面的代码更新为现在的样子,我确实注意到dispatch事件来自app/code/local/Mage/Sales/Model/Order/Payment.php,它覆盖了核心文件。这可能是它不起作用的原因吗?感谢您的帮助,我看到您已将Finalize的一些实例更改为Sales。记住在任何地方都要这样做,包括类名,类名必须与两个XML文件中的路径名和模块名相匹配。我从来不知道事件失败仅仅是因为它是从本地目录发送的,重写应该没有任何效果。您是否尝试过将断点或另一个Mage::log放置在您认为事件发生的位置?