在 Magento 中,有没有办法在管理后端获取当前正在编辑的产品的 productID?
我找到了这个:
Mage::registry('current_product');
但它似乎没有得到正在编辑的那个。
编辑:如果有任何区别,我正在尝试从监听事件的扩展中获取它:
catalog_product_gallery_upload_image_after
在 Magento 中,有没有办法在管理后端获取当前正在编辑的产品的 productID?
我找到了这个:
Mage::registry('current_product');
但它似乎没有得到正在编辑的那个。
编辑:如果有任何区别,我正在尝试从监听事件的扩展中获取它:
catalog_product_gallery_upload_image_after
当前产品的 ID 在 URL 中。您可以将其作为参数检索,如下所示:
$productId = Mage::app()->getRequest()->getParam('id');
如果要将产品作为对象加载,请存储该 ID 并使用
$product = Mage::getModel('catalog/product')->load($productId);
编辑:看起来你正在使用观察者。我假设观察者文件本身不会扩展 Magento 的任何部分。(这是文件吗?http://svn.magentocommerce.com/source/branches/1.7/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php)尝试获取操作并获取请求那样
$action = $observer->getAction();
$productId = $action->getRequest()->getParam('id');
Mage::registry('product')
只要在调用之后请求它,它就应该起作用Mage_Adminhtml_Catalog_ProductController::_initProduct()
。
Mage::app()->getRequest()->getParam('id')
也应该工作。
根据事件编辑
被观察的事件是响应 JS 发起的请求而调度的。控制器操作不知道调用上下文,并且注册表中没有注册产品。记录请求参数或可能的引荐来源可能会提供洞察力。