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 に答える