对于遇到同样问题并希望在此找到答案的人。
我发现了这个问题。
首先,您如何删除产品?
如果您从产品编辑页面中删除产品,则您的观察者可能无法工作。
如果您要从Product Grid页面中删除产品,您的观察者可能会正常工作。
的问题是,事件:catalog_controller_product_delete,只得到在massDeleteAction()在ProductController的()调度。
和不是里面的deleteAction()。
我已经在magentocommerce.com/bug-tracking上将此问题提交为一个错误。
为了解决这个问题,粘贴:
Mage::dispatchEvent('catalog_controller_product_delete', array('product' => $product));
里面你deleteAction(),前$product->delete();
像这样的权利:
public function deleteAction()
{
if ($id = $this->getRequest()->getParam('id')) {
$product = Mage::getModel('catalog/product')
->load($id);
$sku = $product->getSku();
try {
Mage::dispatchEvent('catalog_controller_product_delete', array('product' => $product));
$product->delete();
$this->_getSession()->addSuccess($this->__('The product has been deleted.'));
} catch (Exception $e) {
$this->_getSession()->addError($e->getMessage());
}
}
$this->getResponse()
->setRedirect($this->getUrl('*/*/', array('store'=>$this->getRequest()->getParam('store'))));
}
我没有看到这方面的需求。此解决方案更好地工作,无需任何代码修改 - http://stackoverflow.com/a/14211286/515268 – Dayson
@dayson,我不明白其他解决方案是如何**更好**?你正在实现同样的事情。 Magento的家伙承认这是一个错误,因为你可以在我的[pull request](https://github.com/magento/magento2/pull/9#issuecomment-5059665)的评论中读到,这也是答案中提到的由jmva。如果您觉得编辑核心代码是错误的,那么只需将productController扩展到您自己的模块中并在那里编辑即可。 – Chris