Magento 观察购物车中已移除的项目
当产品从购物车中取出时,是否有观察者可用于观察事件?我没有找到 我发现的是Magento 观察购物车中已移除的项目,magento,observer-pattern,Magento,Observer Pattern,当产品从购物车中取出时,是否有观察者可用于观察事件?我没有找到 我发现的是结帐\u购物车\u更新\u物品\u之后,如果通过更改产品数量来删除产品,则可以使用该功能,但当用户使用“删除”按钮时则不能使用该功能。我现在看到的唯一选择是结帐\u购物车\u在之后保存,\u购物车更改时使用。当然,这需要定制逻辑来检查删除了哪个产品。不完美 那么有没有更好的方法来监视删除事件呢?您可以使用sales\u quote\u remove\u item事件,在Mage\u sales\u Model\u quot
结帐\u购物车\u更新\u物品\u之后,如果通过更改产品数量来删除产品,则可以使用该功能,但当用户使用“删除”按钮时则不能使用该功能。我现在看到的唯一选择是结帐\u购物车\u在之后保存,\u购物车更改时使用。当然,这需要定制逻辑来检查删除了哪个产品。不完美
那么有没有更好的方法来监视删除事件呢?您可以使用sales\u quote\u remove\u item
事件,在Mage\u sales\u Model\u quote::removietem()中调度
删除的项作为参数传递给观察者。
要在事件观察者中获取关联的产品模型,请使用$observer->getQuoteItem()->getProduct()
有关监视事件(无论是什么)的问题,请参阅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...
}
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...
}