Olhando para o código principal do Magento 2, parece haver duas maneiras de configurar uma rota de administrador.
O primeiro
#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>
é semelhante ao Magento 1. Você adiciona seu módulo a uma lista de módulos na adminhtml
rota e o Magento verifica para você.
O segundo
#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>
você configurou uma nova rota (id cms
acima) e depois adicionou seu módulo a ela.
Uma dessas é a maneira "certa / preferida" de fazer isso no Magento 2? Se não, qual é a diferença entre os dois? ou seja, quando você usaria um sobre o outro?
Pedindo não para resolver um problema específico, mas para ter certeza de que estou criando minhas rotas da maneira correta e que problemas semelhantes aos módulos Magento 1 (puxando bibliotecas ajax, segurança etc.) sejam evitados.
Eu me deparei com isso também, procurando exemplos de como adicionar um controlador adminhtml. Eu fiz algumas pesquisas e é isso que eu encontrei.
O
route id="adminhtml"
caminho é usado 24 vezes no núcleo.O
before="Magento_Backend"
caminho é usado 31 vezes no núcleo.Existem apenas 50 módulos com um adminhtml / routes.xml, mas 24 + 31 = 55. Dica # 1.
Tentei encontrar um denominador comum entre que tipo de módulo usa esse tipo, mas não consigo identificar nenhum. Então, talvez a mudança tenha sido introduzida em um determinado momento, então verifiquei o momento dos dois tipos. Infelizmente, isso foi bastante difícil, pois a maioria deles foi editada pela última vez em meados de setembro para apresentar as novas urnas, então eu tive que usar a função de história do Github.
Notei que alguns arquivos routes.xml em que a
route id="adminhtml"
opção é usada também usam obefore="Magento_Backend"
, veja, por exemplo, o arquivo routes.xml do Magento_UrlRewrite . Não consigo encontrar nenhuma semelhança conclusiva entre as três variantes.Também verifiquei os novos módulos (que não estavam no M1 e, portanto, não podiam ser portados, mas foram escritos como novos para o M2), como AdvancedPricingImportExport , Integration , MediaStorage e EncryptionKey e, embora alguns usem o
before="Magento_Backend"
e outros não, todos usam a<route id="adminhtml">
tag. Entre esses, os sem obefore="Magento_Backend"
foram alterados pela última vez em fevereiro de 2015, enquanto os com essa tag foram todos editados após essa data.Portanto, minha conclusão preliminar é que esta é a maneira preferida de fazê-lo (decidido explicitamente internamente no QG do Magento ou não);
Eu adoraria ouvir a posição do desenvolvedor central do Magento sobre isso, obviamente.
ATUALIZAÇÃO: Anton Kril respondeu, veja sua resposta para a maneira preferida de fazer isso.
fonte