管理者アクションメソッドを `inpusteAction()`以外に指す方法は?
-
12-12-2019 - |
質問
私のモジュールでは、このようなメニューを設定しています。
<menu>
<catalog>
<children>
<rkt_arattr translate="title" module="rkt_arattr">
<title>Manage My Custom Attribute</title>
<sort_order>100</sort_order>
<children>
<install_attr translate="title" module="rkt_arattr">
<title>Install My Attribute</title>
<action>adminhtml/catalog_arattr_install</action>
<sort_order>10</sort_order>
</install_attr>
</children>
</rkt_arattr>
</children>
</catalog>
</menu>
.
集中するために必要なコードはaction
です。
<action>adminhtml/catalog_arattr_install</action>
.
この値の場合、My URLはこののように見えます
www.mydomain.com/admin/catalog_arattr_install/index/key/ [key_value]
このULRに従って、Magentoはこのようなコントローラ設定を期待しています。
ファイル:
app/code/local/Namespace/Modulename/controllers/Adminhtml/Catalog/Araattr/InstallController.php
.<?php class Namespace_Modulename_Adminhtml_Catalog_Arattr_InstallController extends Mage_Adminhtml_Contorller_Action { public function indexAction() { } }
しかしこれは私が欲しいものではありません。私はこのように私のURL解析が必要です。
www.mydomain.com/admin/catalog_arattr/install/key/ [key_value]
メニューをクリックしたときに以下のメソッドを呼び出すことを意味します。
ファイル:
app/code/local/Namespace/Modulename/controllers/Adminhtml/Catalog/ArattrController.php
.<?php class Namespace_Modulename_Adminhtml_Catalog_ArattrController extends Mage_Adminhtml_Contorller_Action { public function installAction() { } }
しかし、メニューを設定するときにマゼントは常に
indexAction()
を探すように思われるようです。メニューをクリックすると、カスタムアクションに指示する方法はありますか?
解決
は、action
ノードに追加部品を追加するのと同じくらい簡単です。
<action>adminhtml/your_controller/your_action</action>
.
管理者セクションのダウンロードの一部が機能する方法を確認します。
<action>adminhtml/report_product/downloads</action>
.
ここでは、ControllerはMage_Adminhtml_Report_ProductController
で、アクションはdownloadsAction
です。
他のヒント
あなたのaction
パスは、パスのadminhtml/catalog_arattr/install
セクションをアクションとして定義するためにinstall
にする必要があります。各/
スラッシュは、1つのスラッシュのみを持つようにモジュール、コントローラ、次にアクションを分離します。アクションはindexAction()
と見なされます。上記のURLを使用すると、要求はNamespace_Modulename_Adminhtml_Catalog_ArattrController
をターゲットにし、そのinstallAction()
の内側をターゲットにします。もちろん、コントローラの位置を1つのディレクトリに変更する必要があります。