Wie kann ich die Admin-Aktionsmethode auf etwas anderes als „indexAction()“ verweisen?
-
12-12-2019 - |
Frage
In meinem Modul richte ich mein Menü so ein.
<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>
Der Code, auf den Sie sich konzentrieren müssen, ist action
<action>adminhtml/catalog_arattr_install</action>
Für diesen Wert sieht meine URL so aus
www.mydomain.com/admin/catalog_arattr_install/index/key/[key_value]
Gemäß dieser URL erwartet Magento ein Controller-Setup wie dieses.
Datei : 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()
{
}
}
Das ist jedoch nicht das, was ich will.Ich brauche meine URL-Analyse so.
www.mydomain.com/admin/catalog_arattr/install/key/[key_value]
Das heißt, ich möchte, dass die folgende Methode aufgerufen wird, wenn ich auf das Menü klicke
Datei : 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()
{
}
}
Aber es scheint, dass Magento immer danach sucht indexAction()
wenn wir ein Menü einrichten.
Gibt es eine Möglichkeit, durch Klicken auf das Menü zu meiner benutzerdefinierten Aktion zu gelangen?
Lösung
Sollte so einfach sein wie das Hinzufügen zusätzlicher Teile action
Knoten.
<action>adminhtml/your_controller/your_action</action>
Sehen Sie sich an, wie der Download-Teil des Admin-Bereichs funktioniert.
<action>adminhtml/report_product/downloads</action>
Hier ist der Controller Mage_Adminhtml_Report_ProductController
und die Aktion ist downloadsAction
Andere Tipps
Dein action
Pfad sollte sein adminhtml/catalog_arattr/install
um das zu definieren install
Abschnitt des Pfades als Aktion.Jede /
Ein Schrägstrich trennt das Modul, den Controller und dann die Aktion. Da Sie also nur einen Schrägstrich haben, wird davon ausgegangen, dass es sich um die Aktion handelt indexAction()
.Mit der oben genannten URL richtet sich die Anfrage an die Namespace_Modulename_Adminhtml_Catalog_ArattrController
und darin installAction()
.Sie müssen den Speicherort des Controllers natürlich in ein Verzeichnis weiter oben ändern.