Creating Hello world event dispatcher(observer) in Magento?
I am trying to create an event dispatcher in Magento (which should be called after a product gets added to cart).
What I've done so far:
I Googled this and found this link. I followed the instructions specified in this link. I configured the config.xml file and created a Observer.php filder under mymodule/model folder. But, I can't see any result from this.
(The code for config.xml and Ob开发者_开发问答server.php file that i used in my example can be found under http://goo.gl/O7dBy, my custom module name is Crossdata and package name is MyModule - am i doing it wrong?)
Any other link with simple helloworld event dispatcher example would be helpful.
Thanks, Balan
Looking at your code downloaded from http://goo.gl/O7dBy you define:
<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>
and define the model alias of dispatcher
as:
<models>
<dispatcher>
<class>MyPackage_Crossdata_Dispatcher_Model</class>
</dispatcher>
</models>
The resulting class name would be MyPackage_Crossdata_Model_Dispatcher_Model_Observer
, but your observer class is named MyPackage_Crossdata_Dispatcher_Model_Observer
, missing the Model
in between Crossdata
and Dispatcher
.
I'd recommend to drop the whole dispatcher
models definition above and only use the other model alias crossdata
which you've already defined in config.xml
:
<crossdata>
<class>MyPackage_Crossdata_Model</class>
<resourceModel>crossdata_mysql4</resourceModel>
</crossdata>
Then change the event definition to:
<add_to_cart_after>
<class>crossdata/observer</class>
<method>hookToAddToCartAfter</method>
</add_to_cart_after>
Create a file /app/code/local/MyPackage/Crossdata/Model/Observer.php
and define your observer class in it:
class MyPackage_Crossdata_Model_Observer
{
public function hookToAddToCartAfter($observer)
{
// your observer code
}
}
You added a folder for Observer.php, or a file? Can you post the code you wrote for this so we can better help debug with you? That tutorial is about as simple and straightforward as they get.
In your
config.xml
the short name given to your blocks and models iscrossdata
. Yet the event uses the aliasdispatcher/observer
, you have not defined a namedispatcher
. This probably needs to becrossdata/observer
.The Inchoo example calls it's module
Inchoo_Dispatcher
and the model isInchoo_Dispatcher_Model_Observer
. Your module isMyPackage_Crossdata
which means the aliascrossdata/observer
would try to loadMyPackage_Crossdata_Model_Observer
. But your observer is erroneously calledMyPackage_Crossdata_Dispatcher_Model_Observer
.If your pasted code is not showing here in Stack Overflow either indent it by four spaces or use the {} button to format it. That is the preferable way to show code.
精彩评论