En regardant le code principal de Magento 2, il semble y avoir deux façons de configurer une route d'administration.
La première
#File: vendor/magento/module-media-storage/etc/adminhtml/routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="adminhtml">
<module name="Magento_MediaStorage" />
</route>
</router>
</config>
est similaire à Magento 1. Vous ajoutez votre module à une liste de modules dans l' adminhtml
itinéraire, et Magento le vérifie pour vous.
La deuxième
#File: vendor/magento/module-cms/etc/adminhtml/routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="cms" frontName="cms">
<module name="Magento_Cms" before="Magento_Backend" />
</route>
</router>
</config>
vous a mis en place une nouvelle route (id cms
ci-dessus), puis en y ajoutant votre module.
Est-ce que l'une de ces méthodes est la "bonne / préférée" pour le faire dans Magento 2? Sinon, quelle est la différence entre les deux? c'est-à-dire quand utiliseriez-vous l'un sur l'autre?
Demander de ne pas résoudre un problème spécifique, mais de s'assurer que je crée mes itinéraires de la bonne manière et que les problèmes similaires aux modules Magento 1 (extraction des bibliothèques ajax, sécurité, etc.) sont évités.
Je suis également tombé sur cela en recherchant des exemples sur la façon d'ajouter un contrôleur adminhtml. J'ai fait quelques recherches et c'est ce que j'ai trouvé.
La
route id="adminhtml"
voie est utilisée 24 fois dans le noyau.La
before="Magento_Backend"
voie est utilisée 31 fois dans le noyau.Il n'y a que 50 modules avec un adminhtml / routes.xml mais 24 + 31 = 55. Indice # 1.
J'ai essayé de trouver un dénominateur commun entre quel type de modules utilise quel type, mais je n'arrive pas à en identifier. Alors peut-être que le changement a été introduit à un certain moment, j'ai donc vérifié le timing sur les deux types. Malheureusement, cela a été assez difficile car la plupart d'entre eux ont été modifiés pour la dernière fois à la mi-septembre pour présenter les nouvelles urnes, j'ai donc dû utiliser la fonction d'historique de Github.
J'ai ensuite remarqué que certains fichiers routes.xml où l'
route id="adminhtml"
option est utilisée utilisent également lebefore="Magento_Backend"
, voir par exemple le fichier routes.xml de Magento_UrlRewrite . Je n'arrive pas à trouver de points communs concluants entre les trois variantes.J'ai également vérifié les nouveaux modules (qui n'étaient pas dans M1 et ne pouvaient donc pas être portés mais ont été écrits pour M2), tels que AdvancedPricingImportExport , Integration , MediaStorage et EncryptionKey et bien que certains utilisent le
before="Magento_Backend"
et d'autres pas, ils utilisent tous la<route id="adminhtml">
balise. Parmi ceux-ci, ceux sans lebefore="Magento_Backend"
dernier ont été modifiés en février 2015 tandis que ceux avec ce tag ont tous été modifiés après cette date.Donc, ma conclusion préliminaire est que c'est la façon préférée de le faire (soit explicitement décidé en interne au siège de Magento ou non);
J'adorerais entendre la position du développeur principal de Magento à ce sujet, évidemment.
MISE À JOUR: Anton Kril a répondu, voir sa réponse pour la façon préférée de le faire.
la source