Magento 中的事件

magento的事件机制就跟dural的hook机制一样,为了更好的扩展magento。magento里面的很多操作都是有事件派送的,比如产品的保存,删除,订单的保存,等等,很多很多。

如何在自己的程序中派送事件?

事件派送很简单,如以下代码

Java代码  

  1. Mage::dispatchEvent('checkout_onepage_controller_success_action', array('quote_item' => $item));  

如何监听事件?

可以使用 Mage::addObserver来监听事件,但一般不那样做,基本上都是在etc/config.xml只添加的。 如以下代码

Java代码  

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <config>  
  3.     <global>  
  4.         <models>  
  5.             <boomorder>  
  6.                 <class>Boom_Order_Model</class>  
  7.             </boomorder>  
  8.         </models>  
  9.     </global>  
  10.     <frontend>  
  11.         <events>  
  12.             <checkout_onepage_controller_success_action>  
  13.                 <observers>  
  14.                     <boom_order_observer>  
  15.                         <type>singleton</type>  
  16.                         <class>boom_order_model_observer</class>  
  17.                         <method>myOrderProcess</method>  
  18.                     </boom_order_observer>  
  19.                 </observers>  
  20.             </checkout_onepage_controller_success_action>  
  21.         </events>  
  22.     </frontend>  
  23. </config>  

当checkout_onepage_controller_success_action事件派送之后,会有函数会执行,它们分别是Boom/Order/Model/ Observer.php文件里面的myOrderProcess方法。

Java代码  

  1. <?php  
  2. class Boom_Order_Model_Observer  
  3. {  
  4.     /** 
  5.      * Event Hook: checkout_onepage_controller_success_action 
  6.      * @param $observer Varien_Event_Observer 
  7.      */  
  8.     public function myOrderProcess($observer)  
  9.     {  
  10.         Mage::log("Enter myOrderProcess");  
  11.         $order = new Mage_Sales_Model_Order();  
  12.         $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();  
  13.         $order->loadByIncrementId($incrementId);  
  14.         Mage::log("Exit myOrderProcess");  
  15.     }  
  16. }  

 sdfs

时间: 2024-10-31 23:23:49

Magento 中的事件的相关文章

JQ中click事件在ie上无效,火狐,谷歌,360都正常

问题描述 JQ中click事件在ie上无效,火狐,谷歌,360都正常 $('input:radio').bind("click", function () { // alert("11"); var cs = $(this).attr('class').toString(); var a = $(this).attr('id').toString(); var c = cs.substring(0, 4); // alert("22"); if

理解&amp;#106avascript中的事件

在很多语言的学习中,"事件"都是一个比较难理解,但是又是一个很重要的概念.javascript中的事件处理也是一样,正因为有了事件处理,才会出现Ajax拖动的效果.本文就讨论一下JavaScript中的事件处理,读过之后,您就会知道,很多Ajax框架实现拖动效果的原理了.一. IE Event对象(一)IE Event对象的主要属性和方法 在IE中有一个专门负责事件处理的对象Event,这个对象负责对事件的处理,含有很多的属性和方法,通过这些方法和属性的调用,就能完成很多的事件处理.

理解JavaScript中的事件

javascript 在很多语言的学习中,"事件"都是一个比较难理解,但是又是一个很重要的概念.JavaScript中的事件处理也是一样,正因为有了事件处理,才会出现Ajax拖动的效果.本文就讨论一下JavaScript中的事件处理,读过之后,您就会知道,很多Ajax框架实现拖动效果的原理了.一. IE Event对象(一)IE Event对象的主要属性和方法 在IE中有一个专门负责事件处理的对象Event,这个对象负责对事件的处理,含有很多的属性和方法,通过这些方法和属性的调用,就能

ASP.NET开发系列之在用户控件中添加事件

asp.net|控件 在<在用户控件中添加属性>这一篇文章中我们演示了如何在用户控件中添加属性,接下来我们演示如何在用户控件中添加事件. 在<在用户控件中添加属性>这一篇文章中我们定义了一个用户登录的用户控件UserLogin.ascx 文件,里面包含了一个LinkButton服务器按钮控件,当用户单击该按钮时服务器端会自动生成一个回发来激发Page.Load事件.除了服务器自动产生回发来激发Page.Load事件外,我们可以给LinkButton添加一个它自己的事件,添加事件其实

深入解析C#编程中的事件

编程 一个事件是一个使对象或类可以提供公告的成员.用户可以通过提供事件句柄来为事件添加可执行代码.事件使用事件声明来声明: 一个事件声明既可以是一个事件域声明也可以是事件属性声明.在每种情况中,声明都可以由属性集合, new 修饰符, 四个访问修饰符的有效组合 和一个静态修饰符组成. 一个事件声明的类型必须是一个代表类型, 而那个代表类型必须至少同事件本身一样可访问. 一个事件域声明与一个声明了一个或多个代表类型域的域声明相应.在一个事件域声明中不允许有readonly 修饰符. 一个事件属性声

C#中的事件

/* 事件和异常相似,它们都由对象引发.但不同之处是,异常由try catch块处理,而事件需要有订阅它的主法(事件处理程序)来处理. * 而且这个函数必须匹配事件的要的求方法签名,这个签名由一个委托指定. * 事件由对象引发后 ,就开始执行它的处理程序.*///下面看个例子using System;namespace me{ public delegate void ageHandler(int x); public class person { int age; public event a

更新MFC中的视图,跟踪.NET Framework中的事件

本文配套源码 如何更新MFC中的视图? 如何跟踪.NET Framework 中的事件? 我在 MDI 程序中打算通过 CMainFrame 中的定时器事件来更新所有的子窗口. 视图用于显示许多图表.用如下的代码只能更新当前活动窗口: GetActiveWindow()->GetActiveView()->GetDocument() 是否有其它的方法从 CMDIFrame 类中获得所有的子窗口或者所有的文档? Makarand 你的情况并不罕见.许多采集实时数据的程序需要定时更新屏幕.即使你的

在C++ Builder中定义事件

在C++ BUILDER中,事件是一种委托模型,它是对消息的封装.如果你用过VC,你就知道在VC中并不存在什么事件,而只有消息处理函数,而在C++ BUILDER中则是由事件处理函数来负责响应消息.同是,事件本身也是一指针,它是一个闭包,通常在C++ BUILDER中有两种事件:通知类型事件(即TNOTIFYEVENT,对WINDOWS消息的封装)和自定义事件.除此之外,我们也知道事件是通过一个虚拟函数来点燃的,比如说ONEXIT事件是由DOEXIT虚拟函数点燃的,下面我写一个自定义事件,很明显

JQuery中DOM事件绑定用法详解

 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.mousemove.mouseover.mouseout.mouseenter.mou