在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中创建管理员菜单的更多相关文章

  1. Extjs中创建Tree菜单【一】

    此篇treepanel的描写是很简单,没有太大的难度,在学习时,可以先熟悉tree的一些配置信息.属性.方法和事件. 然后先写一个简单的例子,慢慢了解从中如何实现的,然后在慢慢的深入了解,实现一些复杂 ...

  2. Android在Activity中与Fragment中创建自定义菜单的区别

    区别就在这里,Activity中添加菜单要这样: public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R ...

  3. 在oracle中创建管理员密码

    1.因为在安装Oracle11g时没有设置sys和system用户的密码,导致登陆不上SQLplus,后面用sqlplus / as sysdba ,密码为:root登陆上去创建了密码. 2.如下图

  4. liunx中图形化桌面环境中的脚本编程之——创建文本菜单

    整体是通过建立菜单布局,然后根据菜单上的布局建立函数(就是为这些布局实现功能),最后将函数和布局实现逻辑上的相连: 如何建立菜单布局? 整体上是通过打印字符创建出,因此需要使用echo命令,但是有一些 ...

  5. Android开发 ---代码创建选项菜单、隐藏菜单项、菜单的生命周期,菜单按钮图标设置、搜索框、xml中设置子菜单

    1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> < ...

  6. 【VisualStdio】在VS2015中显示上下文菜单中“创建单元测试”菜单

    ---恢复内容开始--- VS2012以后创建单元测试的选项被默认隐藏了,创建单元测试变得无比低效率.看msdn的说法好像是想推荐使用Intell Test来替代单元测试的用途,但是还没摸清楚也不敢瞎 ...

  7. 如何快速在odoo中创建自己的菜单

    上一篇内容:如何快速创建odoo模块,使用脚手架快速创建自己的odoo应用app 前言 在上一个教程中,我们已经实现了对模块的创建,现在我们要对创建的模块添加内容,这个教程将教你如何在odoo菜单中创 ...

  8. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  9. 在 ASP.NET 中创建数据访问和业务逻辑层(转)

    .NET Framework 4 当在 ASP.NET 中处理数据时,可从使用通用软件模式中受益.其中一种模式是将数据访问代码与控制数据访问或提供其他业务规则的业务逻辑代码分开.在此模式中,这两个层均 ...

随机推荐

  1. Belgrade Azure 2019-2-11活动感悟

    这是<国外线下技术俱乐部建设>系列文章之一.   活动网址:https://www.meetup.com/Azure-UG-Srbija/events/258673179/ 活动内容:Az ...

  2. 南京邮电大学java程序设计作业在线编程第八次作业

    程序设计类课程作业平台 王利国 主页 教学资源 我的作业列表 程序设计课 账户 王利国的"Java语言程序设计第8次作业(2018)"详细 主页 我的作业列表 作业结果详细 总分: ...

  3. adb部署及使用

    一 掌握adb部署&使用方法及常用命令 1.何为adb? sdk软件开发套件software development kit apk是安卓应用安装包 adb是android sdk的一个工具, ...

  4. CentOS.7下安装配置FTP和SFTP服务

    一: FTP Centos7中默认已经安装了sshd服务(sftp), vsftpd需要手动安装 1.安装并启动FTP服务 1.1 安装vsftpd 使用 yum 安装 vsftpd yum inst ...

  5. js调用浏览器打印指定div内容

    --打印按钮事件 function printForm(){    var headstr = '<html xmlns:th="http://www.thymeleaf.org&qu ...

  6. 【English 】20190319

     BOKO鼻子['boʊkoʊ] pores毛孔['pɔ:z] cute漂亮可爱[kjut] DEKO-BOKO pores don't make a girl cute! ideal最理想的[aɪˈ ...

  7. uml类图关系

    原文地址http://www.jfox.info/uml-lei-tu-guan-xi-fan-hua-ji-cheng-shi-xian-yi-lai-guan-lian-ju-he-zu-he 在 ...

  8. Spring service本类中方法调用另一个方法事务不生效问题(转载)

    前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的.因此专门写此篇帖子分析why. 1.预备知识 aop概 ...

  9. springmvc中的类型转换器

    在使用springmvc时可能使用@RequestParam注解或者@RequestBody注解,他们的作用是把请求体中的参数取出来,给方法的参数绑定值. 假如方法的参数是自定义类型,就要用到类型转换 ...

  10. Codeforces Global Round 2 Solution

    这场题目设置有点问题啊,难度:Div.2 A->Div.2 B->Div.2 D->Div.2 C->Div.2 D->Div.1 D-> Div.1 E-> ...