Magento で、管理者バックエンドで現在編集中の製品の productID を取得する方法はありますか?
私はこれを見つけました:
Mage::registry('current_product');
しかし、編集中のものを取得していないようです。
編集:違いがある場合は、イベントをリッスンしている拡張機能から取得しようとしています:
catalog_product_gallery_upload_image_after
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から発信されたリクエストに応答してディスパッチされます。コントローラのアクションは呼び出しコンテキストを認識せず、レジストリに製品が登録されていません。リクエストパラメータまたは場合によってはリファラーをログに記録すると、洞察が得られる可能性があります。