本节将开始探索菜单项系统。 我们的最终目标是为ToDoCrud模块添加一个指向 Magento 左侧管理应用程序的链接,这是向 Magento 2 添加后端页面的第一步。
示例项目后台网址:http://hyh.local.com/admin/
生成magento2项目的命令(admin后台管理页面的账号密码在此设置admin-user和admin-password):
php bin/magento setup:install --base-url=http://hyh.local.com --db-host=127.0.0.1 --db-name=1hyhtest --db-user=root --db-password= --admin-firstname=olivia --admin-lastname=huang --admin-email=olivia.huang@bcnetcom.com --admin-user=admin --admin-password=bc123123 --language=en_US --currency=USD --timezone=America/Chicago --use-rewrites=1 --search-engine=elasticsearch7 --elasticsearch-host=127.0.0.1 --elasticsearch-port=9200
一、新建左侧菜单项(一级菜单)
在ToDoCrud模块下的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>
<add id="Bcn_ToDoCrud::top_level_example"
title="Top Level Example"
module="Bcn_ToDoCrud"
sortOrder="9999"
resource="Magento_Backend::content"
/>
</menu>
</config>
menu.xml 文件是 <add/> 节点的集合。 每个节点都会向 Magento 的后端添加一个菜单项。
--id 属性定义了该节点的唯一标识符。 按照惯例是模块的名称(Bcn_ToDoCrud),后跟两个冒号(::),然后是描述模块功能的文本(top_level_example)。
--title属性的值为展示在页面的菜单项文本。
--module 属性应该为当前模块Bcn_ToDoCrud。
--sortOrder 属性控制此菜单项的展示排序。
--resource属性定义了用户必须具有的 ACL 规则才能访问此菜单项。
刷新admin页面,显示新增的菜单项
二、为新建的菜单项添加子菜单(二级菜单)
在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>
<add id="Bcn_ToDoCrud::top_level_example"
title="Top Level Example"
module="Bcn_ToDoCrud"
sortOrder="9999"
resource="Magento_Backend::content"
/>
<!-- 子节点 -->
<add id="Bcn_ToDoCrud::second_level_example"
title="Second Level Example"
module="Bcn_ToDoCrud"
sortOrder="9999"
resource="Magento_Backend::content"
parent="Bcn_ToDoCrud::top_level_example"
action="cms/page/index"
/>
</menu>
</config>
--parent 属性控制此菜单项父菜单项,即该菜单项属于哪个父节点的子节点。
--action属性有3段,frontName/controllerName/actionName(route文件中起的前名/控制器名/控制器下的php类名)。
修改完后,刷新浏览器,top菜单下已经新增second子菜单。
三、为子菜单添加菜单项(三级菜单)
在menu.xml文件添加一个三级菜单
<!-- File: app/code/Pulsestorm/MenuTutorial/etc/adminhtml/menu.xml -->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
<!-- ... -->
<!-- 三级节点,菜单项-->
<add id="Bcn_ToDoCrud::third_level_example"
title="Third Level Example"
module="Bcn_ToDoCrud"
sortOrder="9999"
resource="Bcn_ToDoCrud::content"
parent="Bcn_ToDoCrud::second_level_example"
action="cms/page/index"
/>
</menu>
</config>
修改完后,清除缓存刷新浏览器: