Comment puis-je pointer une méthode d'action d'administration vers une méthode autre que « indexAction() » ?
-
12-12-2019 - |
Question
Dans mon module, je configure mon menu comme ceci.
<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>
Le code sur lequel vous devez vous concentrer est action
<action>adminhtml/catalog_arattr_install</action>
Pour cette valeur, mon URL ressemble à ceci
www.mydomain.com/admin/catalog_arattr_install/index/key/[key_value]
Selon cette ulr, Magento s'attend à une configuration de contrôleur comme celle-ci.
Déposer : 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()
{
}
}
Mais ce n'est pas ce que je veux..J'ai besoin que mon URL soit analysée comme ceci.
www.mydomain.com/admin/catalog_arattr/install/key/[key_value]
Cela signifie que je veux que la méthode ci-dessous soit appelée lorsque je clique sur le menu
Déposer : 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()
{
}
}
Mais il semble que magento cherche toujours indexAction()
lorsque nous configurons un menu.
Existe-t-il un moyen de diriger vers mon action personnalisée lorsque je clique sur le menu ?
La solution
Cela devrait être aussi simple que d'ajouter des pièces supplémentaires au action
nœud.
<action>adminhtml/your_controller/your_action</action>
Découvrez comment fonctionne la partie téléchargements de la section d'administration.
<action>adminhtml/report_product/downloads</action>
Ici, le contrôleur est Mage_Adminhtml_Report_ProductController
et l'action est downloadsAction
Autres conseils
Ton action
le chemin devrait être adminhtml/catalog_arattr/install
pour définir le install
section du chemin comme action.Chaque /
une barre oblique sépare le module, le contrôleur puis l'action donc comme vous n'avez qu'une seule barre oblique, l'action est supposée être indexAction()
.Avec l'URL ci-dessus, la requête ciblera le Namespace_Modulename_Adminhtml_Catalog_ArattrController
et à l'intérieur de ça installAction()
.Vous devrez bien sûr changer l'emplacement du contrôleur vers un répertoire plus haut.