2012-02-08 65 views
8

是否有观察者可以用来观察产品从购物车中移出时的事件?我还没有找到。观察员在购物车中移除的物品

我发现的是checkout_cart_update_items_after,如果通过更改产品计数来删除产品,可以使用它,但在用户使用删除按钮时可以使用。我目前看到的唯一选择是checkout_cart_save_after,每当购物车发生变化时都会使用它。当然这需要定制逻辑来检查哪个产品被删除。不完美。

那么有没有更好的方法来注意删除事件?

回答

24

您可以使用sales_quote_remove_item事件,分派在Mage_Sales_Model_Quote::removeItem()
删除的项目作为参数传递给观察者。

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

要获得一个事件观察器相关的产品型号,使用$observer->getQuoteItem()->getProduct()

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... 
} 
相关问题