我目前正在尝试在Magento Community 1.6.2.0上添加观察者
我正在尝试向 checkout_onepage_controller_success_action 添加观察者,以检查订购产品的SKU并执行其他代码,如果SKU正确,则会创建并通过电子邮件发送优惠券代码。
我可以在另一个页面上测试时正确创建并通过电子邮件发送代码,但是每次尝试将方法设置为观察者都失败了,没有任何解释。
app / etc / modules / giftCheck_sales.xml 中的
app / code / local / giftCheck / sales / etc <?xml version="1.0"?>
<config>
<modules>
<giftCheck_sales>
<active>true</active>
<codePool>local</codePool>
</giftCheck_sales>
</modules>
</config>
app / code / local / giftCheck / sales / models / observer.php 中的<?xml version="1.0"?>
<config>
<frontend>
<events>
<checkout_onepage_controller_success_action>
<observers>
<giftCheck_sales>
<type>singleton</type>
<class>giftCheck_sales/observer</class>
<method>exportOrder</method>
</giftCheck_sales>
</observers>
</checkout_onepage_controller_success_action>
</events>
</frontend>
</config>
class giftCheck_sales_Model_Observer
{
public function exportOrder(Varien_Event_Observer $observer)
{
die('test');
}
}
我的问题是无论我做什么,我都无法让这些观察者工作。无论我在观察者中放置什么代码,它都永远不会被执行。
我设置这个观察者的方式是什么(我假设我的XML)?
非常感谢任何帮助!
答案 0 :(得分:2)
要查看所有活动模块,请转至System->Configuration->Advanced->Advanced
。如果模块没有出现在该列表中,那么Magento不知道您的模块是否存在。
就你的代码而言,我没有特别使用Magento 1.6.2.0,但我可以看到一些可能导致你麻烦的事情。其中首先是您的命名空间和模块名称。这些应始终以大写字母开头:
app/etc/modules/Giftcheck_Sales.xml
app/code/local/Giftcheck/Sales/
当然,Giftcheck_Sales.xml
应该是这样的:
<?xml version="1.0"?>
<config>
<modules>
<Giftcheck_Sales>
<active>true</active>
<codePool>local</codePool>
</Giftcheck_Sales>
</modules>
</config>
我看到的另一个问题是你没有告诉Magento在哪里可以找到你的模型。套管也存在一些问题。
您的配置应如下所示:
<?xml version="1.0"?>
<config>
<global>
<models>
<giftcheck_sales>
<class>Giftcheck_Sales_Model</class>
</giftcheck_sales>
</models>
</global>
<frontend>
<events>
<checkout_onepage_controller_success_action>
<observers>
<giftcheck_sales>
<class>giftcheck_sales/observer</class>
<method>exportOrder</method>
</giftcheck_sales>
</observers>
</checkout_onepage_controller_success_action>
</events>
</frontend>
</config>
您的目录结构似乎也存在问题。
app/code/local/giftCheck/sales/models/observer.php
应该是:
app/code/local/Giftcheck/Sales/Model/Observer.php
该文件的内容应如下所示:
class Giftcheck_Sales_Model_Observer
{
public function exportOrder(Varien_Event_Observer $observer)
{
die('test');
}
}
不要忘记更正观察者类名的大小。
希望这有帮助。
答案 1 :(得分:0)
这里有一些修正我可以给你添加你的config.xml 可能是由于区分大小写的问题,您无法致电您的观察员
app / code / local / giftCheck / sales / etc 中的
希望这对您有用。<?xml version="1.0"?>
<config>
<frontend>
<events>
<checkout_onepage_controller_success_action>
<observers>
<giftcheck_sales>
<type>singleton</type>
<class>giftcheck_sales/observer</class>
<method>exportOrder</method>
</giftcheck_sales>
</observers>
</checkout_onepage_controller_success_action>
</events>
</frontend>
</config>
答案 2 :(得分:0)
你配置错了。你的代码应该是这样的,
<config>
<frontend>
<global>
<events>
<checkout_onepage_controller_success_action>
<observers>
<GiftCheck_Sales>
<type>singleton</type>
<class>GiftCheck_Sales_Model_Observer</class>
<method>exportOrder</method>
</GiftCheck_Sales>
</observers>
</checkout_onepage_controller_success_action>
</events>
</global>
</frontend>
</config>
你错过了全局标记。你的观察者类应该是这样的,
class GiftCheck_Sales_Model_Observer
{
public function exportOrder(Varien_Event_Observer $observer)
{
echo "test";
}
}
多数民众赞成.. !!让我知道如果使用此代码有任何问题.. !!