1

在 Magento 中,有没有办法在管理后端获取当前正在编辑的产品的 productID?

我找到了这个:

Mage::registry('current_product');

但它似乎没有得到正在编辑的那个。

编辑:如果有任何区别,我正在尝试从监听事件的扩展中获取它:

catalog_product_gallery_upload_image_after
4

2 回答 2

4

当前产品的 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');
于 2013-02-14T20:55:42.947 回答
1

Mage::registry('product')只要在调用之后请求它,它就应该起作用Mage_Adminhtml_Catalog_ProductController::_initProduct()

Mage::app()->getRequest()->getParam('id')也应该工作。

根据事件编辑

被观察的事件是响应 JS 发起的请求而调度的。控制器操作不知道调用上下文,并且注册表中没有注册产品。记录请求参数或可能的引荐来源可能会提供洞察力。

于 2013-02-14T20:56:38.140 回答