Ade*_*eel 3 magento observer-pattern
我想创建一个删除产品的观察者.表示管理员删除产品时,在删除过程中我想在此过程中添加一些自定义功能.目前我正在使用
catalog_controller_product_delete
Run Code Online (Sandbox Code Playgroud)
以此目的.但它对我没有任何作用.请帮我.如何在产品删除期间做些额外的事情?
我想将已删除的产品ID发送到我的API,我有这个产品的副本,这样我也可以从那里删除它,但它不会触发事件.我知道这是因为我正在触发sendProductDelReq()方法<method>sendProductDelReq</method>并且为了验证我在这个方法中放了一个骰子.
对于遇到同样问题并希望在这里找到答案的人们.
我发现了这个问题.
首先,您如何删除产品?
如果您要从产品编辑页面中删除产品,则您的观察者可能无法正常工作.
如果要从"产品网格"页面中删除产品,您的观察者可能会正常工作.
问题是事件: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)
| 归档时间: |
|
| 查看次数: |
4571 次 |
| 最近记录: |