magento - 如何为某个action指定observer(或称事件event)
有一个需求是很现实的,那就是要求说在客户添加商品到购物栏时做某些特定的处理,这个时候我们需要对magento的checkout模块的cartController的add action做修改,当然为了在下次版本更新时方便起见,同时也是遵循magento的灵活开发规范,我们应该不去修改它的代码,当然你可以想建个新模块重写这个controller,这不是不可以,但是事实上你可以利用magento的observer来实现。
首先在config.xml中添加:
< events >
< checkout_cart_after_add >
< observers >
< my_custom_observer >
< type > model </ type >
<class> mymodule / observer </class>
< method > cartAfterAdd </ method >
</ my_custom_observer >
</ observers >
</ checkout_cart_after_add >
</ events >
然后创建你的observer类:
<?php
class Mage_MyModule_Model_Observer
{
function addCartAfter ( $observer )
{
$event = $observer -> getEvent ();
// now you can reference any arguments that were supplied during event dispatch
// look in $eventArgs in addAction
$product = $event -> getProduct ();
$qty = $event -> getQty ();
$request = $event -> getRequest ();
// .. your custom processing here
}
}
如果你有兴趣可以进一步了解magento是如何处理调用observer的。