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

相关文章
|
JavaScript
Typecho - Joe主题给网站添加复制弹窗提醒
Typecho - Joe主题给网站添加复制弹窗提醒
153 0
|
Web App开发 前端开发
如何停止在Joomla中多次加载Bootstrap
Bootstrap是用于构建和设计网站的最受欢迎的CSS框架。开发人员和设计师都很依赖它。
如何停止在Joomla中多次加载Bootstrap
|
自然语言处理
Joomla中所有默认组件的指南
Joomla带有11个默认组件,比如广告横幅和联系人表单。在这篇博客文章中,我们将向您展示它们是如何工作的。 如果你想给你的网站增加一个令人兴奋的额外功能,很有可能它是一个组件。你想要展示一个广告横幅吗?这是一个组件。
如何关闭WordPress后台的主题、插件、版本更新通知?
由于WordPress 更新速度非常快,不论是主题 插件或是版本,每个月少说要执行个好几次,因为更新快,所以WordPress后台加入了更新通知,提醒使用者有新版本了,可以进行插件、主题或是系统更新,可是新版通常是解决旧版Bug,但很容易会产生一些未知Bug,如果你不想要冒这风险,通常可以等一个礼拜看看,没问题再行更新动作。
1071 0
|
Web App开发 Windows 数据安全/隐私保护
启用第三方Chrome插件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/70246386 当我们通过本地安装了第三方Chrome插件(或者自己刚刚开发的插件),结果发现不能启用。
1270 0