Magento 中的事件

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

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

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

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

如何监听事件?

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

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <global>
        <models>
            <boomorder>
                <class>Boom_Order_Model</class>
            </boomorder>
        </models>
    </global>
    <frontend>
        <events>
            <checkout_onepage_controller_success_action>
                <observers>
                    <boom_order_observer>
                        <type>singleton</type>
                        <class>boom_order_model_observer</class>
                        <method>myOrderProcess</method>
                    </boom_order_observer>
                </observers>
            </checkout_onepage_controller_success_action>
        </events>
    </frontend>
</config>

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

<?php
class Boom_Order_Model_Observer
{
    /**
     * Event Hook: checkout_onepage_controller_success_action
     * @param $observer Varien_Event_Observer
     */
    public function myOrderProcess($observer)
    {
        Mage::log("Enter myOrderProcess");
        $order = new Mage_Sales_Model_Order();
        $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
        $order->loadByIncrementId($incrementId);
        Mage::log("Exit myOrderProcess");
    }
}

 sdfs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值