在Magento中,有没有办法在Admin后端获取当前正在编辑的产品的productID?获取正在Magento中编辑的产品的productID
我发现这一点:
Mage::registry('current_product');
,但它似乎并没有得到编辑的一个。
编辑:如果这有什么差别,我想从分机监听事件得到它:
catalog_product_gallery_upload_image_after
在Magento中,有没有办法在Admin后端获取当前正在编辑的产品的productID?获取正在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发起请求分派的事件。控制器操作不知道调用上下文,并且注册表中没有注册产品。记录请求参数或可能的推荐人可能会提供洞察力。
我不认为这是工作。这个语句:Mage :: log(Mage :: app() - > getRequest() - > getParam('id')); 不打印任何东西 而且,对它执行$ model-> load会返回一个空白产品对象。 – swl1020 2013-02-14 21:19:24
你要把这段代码准确地放在哪里? – 1000Nettles 2013-02-14 21:27:23
我有一个扩展,其中包含“catalog_product_gallery_upload_image_after”的Observer。代码位于/Model/Observer.php中。 – swl1020 2013-02-14 21:31:27