2013-02-14 50 views
1

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

我发现这一点:

Mage::registry('current_product'); 

,但它似乎并没有得到编辑的一个。

编辑:如果这有什么差别,我想从分机监听事件得到它:

catalog_product_gallery_upload_image_after 

回答

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'); 
+0

我不认为这是工作。这个语句:Mage :: log(Mage :: app() - > getRequest() - > getParam('id')); 不打印任何东西 而且,对它执行$ model-> load会返回一个空白产品对象。 – swl1020 2013-02-14 21:19:24

+0

你要把这段代码准确地放在哪里? – 1000Nettles 2013-02-14 21:27:23

+0

我有一个扩展,其中包含“catalog_product_gallery_upload_image_after”的Observer。代码位于/Model/Observer.php中。 – swl1020 2013-02-14 21:31:27

1

这应该工作,应该为Mage::registry('product'),只要Mage_Adminhtml_Catalog_ProductController::_initProduct()被调用后它被请求。

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

编辑基于事件

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

+0

我不认为这是工作。这条语句:Mage :: log(Mage :: registry('product')); 不打印任何东西 – swl1020 2013-02-14 21:20:19

+0

更新回答解释。 – benmarks 2013-02-15 00:51:39

+0

感谢您的更新。我的模块是否可以有两个观察者,一个监听“更靠后”会有产品信息,而另一个则倾听图像上传?观察者能否以某种方式倾听上传听众的信息? – swl1020 2013-02-15 14:37:00