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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值