博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
magento事件(event)的dispatchEvent(分发)和catchEvent(获取)
阅读量:4665 次
发布时间:2019-06-09

本文共 1101 字,大约阅读时间需要 3 分钟。

当你需要扩展Magento的核心的功能时有两个选择:

(1)重写(override)Magentocore classes

(2)使用Magentoevent-driven 机制

由于你只能重写一次Magentocore classes(如果你需要在多个module中重写相同core class就会出现错误),所以使用MagentoEvent就大显神威了,它使得你的工作简易方便。

Magentoevent-driven机制中有两个非常重要的概念:

(1)分发(dispatch)一个事件(event)

(2)捕捉(catch)一个事件(event)

 

Dispatching events

 

Magento中你需要调用 Mage::dispatchEvent(...) 就可以Dispatch一个Event,

 

Mage::dispatchEvent('custom_event', array('object'=>$this));  

 

该方法有两个参数,一个是事件的标识符(在所有事件中唯一)和一个关联数组。该数组的键值是一个dataVarien_Event_Observer 的一个实例),这个data将被执行事件的函数(observer)进行处理并返回结果。

 

Catching events

 

捕捉事件比分发复杂一些,你必须使用一个已有的module或者新建一个module.这里新建一个,目录结构如下:  

 

在该目录的config.xml文件中,我们新定义一个event observer,下面是参考示例(当然你可以定义不同scopeevent observer):

上面的xml的配置有一个要注意的地方,就是<type />标签里的值可以是model,object,singleton,其中modelobject是等效的且它们都将使用Mage::getModel(....)方法来进行初始化;而singleton将使用Mage::getSingleton(....)来初始化。此外,在Observer.php中就是相关的observer类的定义,该类既不需要继承其他类也不需要继承其他接口。这需要在customObserverAction方法的参数中传入Varien_Event_Observer类的一个实例,正是这个实例对象把dispatcherevent handler联系到一起。同时该实例对象也是继承于Varient_Object,所以拥有getter魔术方法,例:

 

转载于:https://www.cnblogs.com/jeremyke/p/6145059.html

你可能感兴趣的文章
js获取网页屏幕可见区域高度
查看>>
Vector
查看>>
Linux添加新硬盘
查看>>
表格响应式布局实例
查看>>
离散数学第6版25页41题
查看>>
Servlet+JSP例子
查看>>
pc网页适配手机移动端的简单实现
查看>>
pl sql练习(2)
查看>>
Problem B: 判断回文字符串
查看>>
谷歌浏览器,添加默认搜索引擎的搜索地址
查看>>
shop--7.店铺编辑和列表--更新店铺的信息,包括对店铺照片的处理,根据shopId获取shop信息...
查看>>
数据结构化与保存
查看>>
C# .net 获取程序运行的路径的几种方法
查看>>
为什么需要Docker?
查看>>
国内5家云服务厂商 HTTPS 安全性测试横向对比
查看>>
how to control project
查看>>
转 python新手容易犯的6个错误
查看>>
第四节 -- 列表
查看>>
Python入门学习笔记4:他人的博客及他人的学习思路
查看>>
webstorm里直接调用命令行
查看>>