我正在尝试在Magento中创建一个事件调度程序(应该在产品添加到购物车后调用)。
到目前为止我做了什么:
我用Google搜索并找到this链接。我按照此链接中指定的说明操作。我配置了config.xml文件,并在mymodule / model文件夹下创建了一个Observer.php文件夹。但是,我看不出任何结果。
(我在我的示例中使用的config.xml和Observer.php文件的代码可以在http://goo.gl/O7dBy下找到,我的自定义模块名称是Crossdata,包名是MyModule - 我做错了吗?)
使用简单的helloworld事件调度程序示例的任何其他链接都会有所帮助。
谢谢, 巴兰
答案 0 :(得分:1)
查看从http://goo.gl/O7dBy下载的代码,您可以定义:
<events>
<add_to_cart_after>
<observers>
<add_to_cart_after>
<class>dispatcher/observer</class>
<method>hookToAddToCartAfter</method>
</add_to_cart_after>
</observers>
</add_to_cart_after>
</events>
并将dispatcher
的模型别名定义为:
<models>
<dispatcher>
<class>MyPackage_Crossdata_Dispatcher_Model</class>
</dispatcher>
</models>
生成的类名称为MyPackage_Crossdata_Model_Dispatcher_Model_Observer
,但您的观察者类名为MyPackage_Crossdata_Dispatcher_Model_Observer
,缺少Model
和Crossdata
之间的Dispatcher
。
我建议删除上面的整个dispatcher
模型定义,并仅使用您已在crossdata
中定义的其他模型别名config.xml
:
<crossdata>
<class>MyPackage_Crossdata_Model</class>
<resourceModel>crossdata_mysql4</resourceModel>
</crossdata>
然后将事件定义更改为:
<add_to_cart_after>
<class>crossdata/observer</class>
<method>hookToAddToCartAfter</method>
</add_to_cart_after>
创建一个文件/app/code/local/MyPackage/Crossdata/Model/Observer.php
并在其中定义您的观察者类:
class MyPackage_Crossdata_Model_Observer
{
public function hookToAddToCartAfter($observer)
{
// your observer code
}
}
答案 1 :(得分:0)
您为Observer.php或文件添加了一个文件夹?您可以发布为此编写的代码,以便我们更好地帮助您调试吗?该教程与他们得到的一样简单明了。
答案 2 :(得分:0)
在您的config.xml
中,您的模块和模型的简称是crossdata
。但事件使用别名dispatcher/observer
,您尚未定义名称dispatcher
。这可能需要crossdata/observer
。
Inchoo示例调用它的模块Inchoo_Dispatcher
,模型为Inchoo_Dispatcher_Model_Observer
。您的模块为MyPackage_Crossdata
,这意味着别名crossdata/observer
会尝试加载MyPackage_Crossdata_Model_Observer
。但你的观察者被错误地称为MyPackage_Crossdata_Dispatcher_Model_Observer
。
如果粘贴的代码未在Stack Overflow中显示,请将其缩进四个空格或使用 {} 按钮对其进行格式化。这是显示代码的首选方式。