在Magento 2中创建管理员菜单
在Magento 2中创建管理员菜单
- 第1步:创建menu.xml
- 第2步:添加菜单项
- 第3步:刷新Magento缓存
第1步:创建menu.xml
创建名为:menu.xml文件的管理菜单文件
app/code/Mageplaza/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>
第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="Mageplaza_HelloWorld::helloworld" title="Hello World" module="Mageplaza_HelloWorld" sortOrder="51" resource="Mageplaza_HelloWorld::helloworld"/>
<add id="Mageplaza_HelloWorld::post" title="Manage Posts" module="Mageplaza_HelloWorld" sortOrder="10" action="mageplaza_helloworld/post" resource="Mageplaza_HelloWorld::post" parent="Mageplaza_HelloWorld::helloworld"/>
<add id="Mageplaza_HelloWorld::hello_configuration" title="Configuration" module="Mageplaza_HelloWorld" sortOrder="99" parent="Mageplaza_HelloWorld::helloworld" action="adminhtml/system_config/edit/section/helloworld" resource="Mageplaza_HelloWorld::helloworld_configuration"/>
</menu>
</config>
在这个例子中,我们将创建一个名为“Hello World”的0级菜单和两个名为“Manage Posts”和“Configuration”的子菜单。menu.xml文件将定义一个“添加”注释的集合,该注释将向Magento后端添加一个菜单项。我们将看到它的结构:
<add
id="Mageplaza_HelloWorld::post"
title="Manage Posts"
module="Mageplaza_HelloWorld"
sortOrder="10"
action="mageplaza_helloworld/post"
resource="Mageplaza_HelloWorld::post" parent="Mageplaza_HelloWorld::helloworld"/>
我们来解释一些属性:
- 该
id属性是此注释的标识符。它是一个唯一的字符串,应遵循以下格式:{Vendor_ModuleName} :: {menu_description}。 - 该
title属性是将在菜单栏上显示的文本。 - 该
module属性定义了该菜单所属的模块。 - 该
sortOrder属性定义了菜单的位置。较低的值将显示在菜单顶部。 - 该
parent属性是其他菜单节点的Id。它会告诉Magento这个菜单是另一个菜单的孩子。在这个例子中,我们有parent =“Mageplaza_HelloWorld :: helloworld”,所以我们知道这个菜单“Manage Posts”是“Hello World”菜单的子项,它将显示在Hello World菜单中。 - 该
action属性将定义此菜单链接到的页面的URL。如上所述,网址将遵循此格式{router_name} {controller_folder}{action_name}。 - 在此示例中,此菜单将链接到模块HelloWorld,控制器Post和action Index - 该
resource属性用于定义管理员用户必须具有的ACL规则,以便查看和访问此菜单。我们将在其他主题中找到有关ACL的更多详细信息。
您还可以创建更多子菜单,它将显示为上面的Store菜单。
我想谈谈顶级菜单上的图标。您可以在0级菜单标题上方看到它们。此图标由Magento中的“管理图标”字体生成。您可以在此链接中查看所有图标以及如何创建图标
第3步:刷新Magento缓存
确保管理员菜单项显示在Magento 2管理员上,您应该尝试刷新Magento 2缓存。
运行以下命令行:
php bin/magento cache:clean

创建路由文件
创建文件:app / code / Tutorial / SimpleNews / etc / adminhtml / routes.xml(目的:将在此处声明模块的后端的路由器)并将以下代码插入其中:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/
Framework/App/etc/routes.xsd">
<router id="admin">
<route id="simplenews" frontName="simplenews">
<module name="Tutorial_SimpleNews" />
</route>
</router>
</config>
为每个菜单项添加角色
创建文件:app / code / Tutorial / SimpleNews / etc / adminhtml / routes.xml(目的:将在此处声明模块的后端的路由器)并将以下代码插入其中:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/
Framework/Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Tutorial_SimpleNews::simplenews" title="Simple News"
sortOrder="100">
<resource id="Tutorial_SimpleNews::add_news" title="Add News"
sortOrder="1" />
<resource id="Tutorial_SimpleNews::manage_news" title="Manage News"
sortOrder="2" />
<resource id="Tutorial_SimpleNews::configuration" title="Configurations"
sortOrder="3" />
</resource>
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Tutorial_SimpleNews::system_config"
title="Simple News Section" />
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>
运行以下命令行:更新 一下
php bin/magento cache:clean
访问后台查看权限:
System > Permissions > User Roles
在Magento 2中创建管理员菜单的更多相关文章
- Extjs中创建Tree菜单【一】
此篇treepanel的描写是很简单,没有太大的难度,在学习时,可以先熟悉tree的一些配置信息.属性.方法和事件. 然后先写一个简单的例子,慢慢了解从中如何实现的,然后在慢慢的深入了解,实现一些复杂 ...
- Android在Activity中与Fragment中创建自定义菜单的区别
区别就在这里,Activity中添加菜单要这样: public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R ...
- 在oracle中创建管理员密码
1.因为在安装Oracle11g时没有设置sys和system用户的密码,导致登陆不上SQLplus,后面用sqlplus / as sysdba ,密码为:root登陆上去创建了密码. 2.如下图
- liunx中图形化桌面环境中的脚本编程之——创建文本菜单
整体是通过建立菜单布局,然后根据菜单上的布局建立函数(就是为这些布局实现功能),最后将函数和布局实现逻辑上的相连: 如何建立菜单布局? 整体上是通过打印字符创建出,因此需要使用echo命令,但是有一些 ...
- Android开发 ---代码创建选项菜单、隐藏菜单项、菜单的生命周期,菜单按钮图标设置、搜索框、xml中设置子菜单
1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> < ...
- 【VisualStdio】在VS2015中显示上下文菜单中“创建单元测试”菜单
---恢复内容开始--- VS2012以后创建单元测试的选项被默认隐藏了,创建单元测试变得无比低效率.看msdn的说法好像是想推荐使用Intell Test来替代单元测试的用途,但是还没摸清楚也不敢瞎 ...
- 如何快速在odoo中创建自己的菜单
上一篇内容:如何快速创建odoo模块,使用脚手架快速创建自己的odoo应用app 前言 在上一个教程中,我们已经实现了对模块的创建,现在我们要对创建的模块添加内容,这个教程将教你如何在odoo菜单中创 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- 在 ASP.NET 中创建数据访问和业务逻辑层(转)
.NET Framework 4 当在 ASP.NET 中处理数据时,可从使用通用软件模式中受益.其中一种模式是将数据访问代码与控制数据访问或提供其他业务规则的业务逻辑代码分开.在此模式中,这两个层均 ...
随机推荐
- Dynamics 365权限变化大部署后需要注意什么?
本人微信公众号:微软动态CRM专家罗勇 ,回复292或者20190110可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 如果 ...
- java 线程方法 ---- join()
class MyThread2 implements Runnable{ @Override public void run() { for (int i = 0; i < 5; i++){ S ...
- 常用matlab函数(不定时更新)
直方图类: histc 直方图分组 示例 histc(a,0:1:10) 意义:将a(矩阵或向量)分组,分组设置为 0-1 1-2 2-3 -.. 9-10,(10-11) 百分位 prctil ...
- Python 使用Python远程连接并操作InfluxDB数据库
使用Python远程连接并操作InfluxDB数据库 by:授客 QQ:1033553122 实践环境 Python 3.4.0 CentOS 6 64位(内核版本2.6.32-642.el6.x86 ...
- Android .9.png 的介绍
概述 .9.PNG是安卓开发里面的一种特殊的图片,这种格式的图片通过ADT自带的编辑工具生成,使用九宫格切分的方法.点九图是一种可拉伸的位图,android会自动调整它的大小,来使图像在充当背景时可以 ...
- TDBGridEh 标头排序
数据源为adoQuery 1.首先设置dbGridEh里需要排序的字段的Title->Titlebutton属性为true 2.设置dgGridEh的optionsEh->dbhautoS ...
- python 通过元类控制类的创建
一.python中如何创建类? 1. 直接定义类 class A: a = 'a' 2. 通过type对象创建 在python中一切都是对象 在上面这张图中,A是我们平常在python中写的类,它可以 ...
- SQL语句更新时间字段的年份、月份、天数、时、分、秒
SQL语句更新时间字段的年份.月份.天数.时.分.秒 --修改d表日期字段的年份update dset birth=STUFF(convert(nvarchar(23),birth,120),1,4, ...
- python粗谈面向对象(一)
1.面向过程编程vs函数式编程 面向过程编程 以计算对象的元素个数为例. str_1 = 'abcdefg' count = 0 for i in str_1: # 统计字符串元素个数 count + ...
- selenium Python 总结一些工作中可能会经常使用到的API。
selenium Python 总结一些工作中可能会经常使用到的API. 1.获取当前页面的Url 方法:current_url 实例:driver.current_url 2.获取元素坐标 方法:l ...