是否有观察员可以用来观察产品从购物车中取出时的事件?我还没找到。
我发现的是checkout_cart_update_items_after
,如果通过更改产品数量删除产品,则可以使用checkout_cart_save_after
,但是当用户使用删除按钮时则不能使用{{1}}。我现在看到的唯一选择是{{1}},只要购物车发生变化就会使用{1}}。当然,这需要自定义逻辑来检查哪个产品被删除。不完美。
那么有更好的方法来注意删除事件吗?
答案 0 :(得分:24)
您可以使用sales_quote_remove_item
中发送的Mage_Sales_Model_Quote::removeItem()
事件
删除的项目作为参数传递给观察者。
Mage::dispatchEvent('sales_quote_remove_item', array('quote_item' => $item));
要在事件观察者中获取关联的产品模型,请使用$observer->getQuoteItem()->getProduct()
。
答案 1 :(得分:3)
关于观看事件的问题(无论它们是什么),请参阅Mage_Core_Model_App::dispatchEvent()
。调试/记录代码示例:
public function dispatchEvent($eventName, $args)
{
$argsArray = array();
$logfile = fopen(Mage::getBaseDir().'/var/log/events.log','a');
if(is_array($args)){
foreach ($args as $k => $v){
switch (gettype($v)) {
case 'object':
$v = get_class($v);
break;
case 'array':
$v = 'array';
}
$argsArray[$k] = $v;
}
}
$log = $eventName.":\r\t";
foreach($argsArray as $k => $v){
$log .= $k;
$log .= "\r\t\t".$v;
}
$log .= "\r\r";
fwrite($logfile,$log);
fclose($logfile);
// ...Rest of method...
}