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
}
}