2013-02-14 59 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

相關問題