Magento的event机制

比如要在place order时执行自己附加的操作(如MaxMind提供的minFraud 检测),我总是不太希望覆盖Order的place方法。Magento提供了Event机制优雅地处理这样的事情。

就以上面提到的minFraud检测(http://www.maxmind.com/app/ccv),我希望在Place Order完成后执行检测并将结果存储。
首先Magento在Order的place方法里抛出了名字为sales_order_place_after的事件,所以可以捕获这个事件Hook自己附加的代码。

1. 在etc/config.xml中增加如下标签
<config>
  <global>
    <events>
      <sales_order_place_after>
        <observers>
          <cartz_mypayment_order_place_after_observer>
            <type>singleton</type>
            <class>myorder/order_place_after_observer</class>
            <method>fraudCheck</method>
          </cartz_mypayment_order_place_after_observer>
        </observers>
      </sales_order_place_after>     
    </events>
  </global>
</config>

注: cartz_mypayment_order_place_after_observer是无关紧要的,可以定义任何唯一名
2. 定义类models/order/place/after/observer
<?php
class NextDigital_NDPayment_Model_Order_Place_After_Observer{
	public function fraudCheck($observer){
//		$order = $observer->getEvent()->getOrder();
		Mage::log('Fraud Check Here');
		return $this;
	}
}


这样,下订单时,该方法内容将被执行。

你可能感兴趣的:(xml,PHP)