产品删除观察者

Ade*_*eel 3 magento observer-pattern

我想创建一个删除产品的观察者.表示管理员删除产品时,在删除过程中我想在此过程中添加一些自定义功能.目前我正在使用

catalog_controller_product_delete
Run Code Online (Sandbox Code Playgroud)

以此目的.但它对我没有任何作用.请帮我.如何在产品删除期间做些额外的事情?

我想将已删除的产品ID发送到我的API,我有这个产品的副本,这样我也可以从那里删除它,但它不会触发事件.我知道这是因为我正在触发sendProductDelReq()方法<method>sendProductDelReq</method>并且为了验证我在这个方法中放了一个骰子.

Chr*_*ris 5

对于遇到同样问题并希望在这里找到答案的人们.
我发现了这个问题.
首先,您如何删除产品?
如果您要从产品编辑页面中删除产品,则您的观察者可能无法正常工作.
如果要从"产品网格"页面中删除产品,您的观察者可能会正常工作.

问题是事件:catalog_controller_product_delete,只能在productController()中的massDeleteAction()中调度.
不是deleteAction()中.

我已经在magentocommerce.com/bug-tracking上将此问题作为错误提交.

要解决此问题,请粘贴:

Mage::dispatchEvent('catalog_controller_product_delete', array('product' => $product));
Run Code Online (Sandbox Code Playgroud)

在你的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'))));
}
Run Code Online (Sandbox Code Playgroud)