文档 下载安装 商店 博客 问答 主机

Magento 2 创建后台菜单Menu[教程]

模块
开发
后端
教程

#1

在本文中,学习在Magento2中给后台增加菜单链接,并显示在Magento 2的管理菜单页面的左边。
首先,我们将了解后台管理菜单的结构和每个菜单中的操作。
菜单的结构由水平分隔,您将看到左侧栏上的0级(level-0 class)和更高级别的分组,并显示当您单击菜单(level-0).
例如,这张图片是商店(store)的菜单。你会看到商店(store)是0级(level-0 class)的,在左边栏显示。当你点击它时,子菜单会出现如:Setting, Attributes, Taxes…,子菜单(sub-sub-menu)也有一些(Setting has All Stores, Configuration, Terms and Conditions, Order Status)。

查看每个菜单的url,我们将看到类似这样的格式:

http://example.com/admin/catalog/product_attribute/index/key/aa6db988cd4bf9fb91c5b3fe4f5e49ffc0df4c5666aa13f5912b50752fafbea5/

就像前端,我们会有类似的格式: {router_name}{controller_folder}{action_name},但在后台管理菜单中,我们将有一个admin route(可以定制)在之前。使Magento知道这是一个后台界面。

那么菜单是如何创建的呢?我们将为前面主题创建的Hello World模块创建菜单。
在Magento 2我们使用menu.xml添加这个菜单,首先创建这个文件
##创建Magento2后台菜单

  • Step 1: 创建menu.xml
  • Step 2: 添加菜单项
  • Step 3: 刷新Magento缓存

###Step 1: 创建menu.xml
路径:

app/code/Magentochina/HelloWorld/etc/adminhtml/menu.xml

内容:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
</menu>
</config>

Step 2: 添加菜单项

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
   <add id="Magentochina_HelloWorld::helloworld" title="Hello World" module="Magentochina_HelloWorld" sortOrder="51" resource="Magentochina_HelloWorld::helloworld"/>
   <add id="Magentochina_HelloWorld::post" title="Posts" module="Magentochina_HelloWorld" sortOrder="10" action="magentochina_helloworld/post" resource="Magentochina_HelloWorld::post" parent="Magentochina_HelloWorld::helloworld"/>
   <add id="Magentochina_HelloWorld::hello_configuration" title="Configuration" module="Magentochina_HelloWorld" sortOrder="99" parent="Magentochina_HelloWorld::helloworld" action="adminhtml/system_config/edit/section/helloworld" resource="Magentochina_HelloWorld::helloworld_configuration"/>
</menu>
</config>

在本例中,我们将创建一个名为“Hello World”的level - 0菜单和两个名为“Manage Items”和“Configuration”的子菜单。menu.xml文件将定义“add”注释的集合,该集合将添加一个菜单项到Magento后台。我们将看到它的结构:

<add id="Magentochina_HelloWorld::post" title="Posts" module="Magentochina_HelloWorld" sortOrder="10" action="magentochina_helloworld/post" resource="Magentochina_HelloWorld::post" parent="Magentochina_HelloWorld::helloworld"/>

这里我们解释一些属性:

  • id 属性是标识符,它是一个惟一的字符串,应该遵循这个格式: {Vendor_ModuleName}::{menu_description}.
  • title 属性是将显示在菜单栏上的文本.
  • module 属性定义了该菜单所属的模块。
  • sortOrder 属性定义了菜单的位置。较低的值将显示在菜单的顶部.
    *parent 属性是其他菜单节点的Id。它会告诉Magento这个菜单是另一个菜单的孩子。在这个例子中,我们有 parent=”Magentochina_HelloWorld::hello”,所以我们知道这个菜单的“Manage Items”是一个“hello World”菜单的子菜单,它将显示在hello World菜单中.
  • action 属性将定义该菜单的url。正如我们上面所说的,url将遵循这个格式 {router_name}{controller_folder}{action_name}。在本例中,此菜单将链接到HelloWorld模块、控制器Hello和action索引。
  • resource 属性用于定义管理用户必须拥有的权限,才可以查看和访问此菜单。我们将在其他主题中找到关于ACL的更多细节。

您还可以创建更多的子菜单,它将像上图Store菜单一样显示在上面。

我们谈谈谈菜单的图标。您可以在level - 0菜单标题上看到它们。这个图标是由“Admin Icons”的字体在Magento生成的。您可以看到所有的图标以及如何在这个链接中创建一个图标

Step 3: 刷新Magento缓存

为确保管理菜单项显示在Magento 2后台,你应该尝试刷新Magento 2缓存
运行以下命令行:

php bin/magento cache:clean

现在重新登录后台你将会看到:

####本教程翻译自mageplaza,如果你想查看完整的教程,请点击这里.译者:西帅
####如果觉得本站翻译得内容对您有帮助,又没有时间帮助翻译回馈社区.请打赏我们,您的支持是我们的动力:

####转载说明:非常欢迎转载,但是必须保证文章的完整性并附上原文地址和翻译原文的地址,保证阅读者不会产生歧义.

后台ACL访问控制列表[权限管理教程]
Magento2模块开发中文教程索引
Magento2创建后台网格(Grid)[开发教程]