Magento2.3.5创建一个Admin后端的菜单自定义模块

         完成了HelloWorld的简单前端的自定义模块之后,学习一下创建后端的自定义模块,对于admin后端的模块在目录结构上跟前端的模块是有一些小差别,大致的目录结构如下:

1.创建一个AdminSample自定义模块


                    app/
                    └── code/
                        └── Vendor/
                            └── AdminSample/
                                ├── etc/
                                │   ├── adminhtml/
                                │   │   ├── menu.xml
                                │   │   └── routes.xml
                                │   └── acl.xml
                                │   └── module.xml
                                ├── Controller/
                                │   └── Adminhtml/
                                │       └── Sample/
                                │           └── Index.php
                                ├── view/
                                │   └── adminhtml/
                                │       └── layout/
                                │           └── vendor_adminsample_sample_index.xml
                                │       └── templates/
                                │           └── sample.phtml
                                └── registration.php

2.创建registration.php注册文件

app/code/Vendor/AdminSample/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Vendor_AdminSample',
    __DIR__
);

3.创建module.xml定义文件

app/code/Vendor/AdminSample/etc/module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_AdminSample" setup_version="1.0.0"/>
</config>

4.创建路由文件

接下来就要创建路由文件,因为是后端模块,因此要在etc下创建adminhtml目录,routes.xml文件中的router id要改为admin来表示是后端的路由,这块跟前端的模块是有区别的

app/code/Vendor/AdminSample/etc/adminhtml/routes.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <router id="admin">
        <route id="vendor_adminsample" frontName="vendor_adminsample">
            <module name="Vendor_AdminSample" />
        </route>
    </router>
</config>

5.创建menu.xml菜单文件

对于后端的自定义菜单模块,我们在创建的时候需要加入两个新文件一个是菜单文件,来添加菜单项,menu文件跟routes文件都存在于etc/adminhtml目录下:

app/code/Vendor/AdminSample/etc/adminhtml/menu.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Menu/etc/menu.xsd">
    <menu>
        <add id="Vendor_AdminSample::main_menu" 
             title="Vendor Admin Sample" 
             module="Vendor_AdminSample" 
             sortOrder="10" 
             resource="Vendor_AdminSample::main_menu"/>
        <add id="Vendor_AdminSample::sample" 
             title="Sample Page" 
             module="Vendor_AdminSample" 
             sortOrder="20" 
             parent="Vendor_AdminSample::main_menu" 
             action="vendor_adminsample/sample/index" 
             resource="Vendor_AdminSample::sample"/>
    </menu>
</config>

6.创建权限文件acl.xml文件

对于新的后端模块,另一个要添加的就是acl用户权限文件,来指定用户具有哪些菜单权限,可以显示查看哪些菜单!

app/code/Vendor/AdminSample/etc/acl.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
    <acl>
        <resources>
            <resource id="Magento_Backend::admin">
                <resource id="Vendor_AdminSample::main_menu" title="Vendor Admin Sample" sortOrder="10">
                    <resource id="Vendor_AdminSample::sample" title="Sample Page" sortOrder="10"/>
                </resource>
            </resource>
        </resources>
    </acl>
</config>

7.创建控制器文件

配置好所有的xml文件之后,就需要创建控制器文件来处理页面请求,创建的后端自定义模块,在创建控制器的时候要创建一个Adminhtml目录来存放控制器

app/code/Vendor/AdminSample/Controller/Adminhtml/Sample/Index.php

<?php

namespace Vendor\AdminSample\Controller\Adminhtml\Sample;

use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Index extends Action
{
    protected $resultPageFactory;

    public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    ) {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }

    public function execute()
    {
        // 创建一个结果页面
        $resultPage = $this->resultPageFactory->create();
        $resultPage->getConfig()->getTitle()->prepend(__('Sample Admin Page'));

        return $resultPage;
    }
    
    //判断是否具有访问sample的权限
    protected function _isAllowed()
    {
        return $this->_authorization->isAllowed('Vendor_AdminSample::sample');
    }
}

8.创建视图文件

创建xml文件已经控制器文件之后就要窗机布局文件以及模板文件,首先后端模块依旧创建adminhtml目录,其次再创建布局目录layout以及模板目录templates

app/code/Vendor/AdminSample/view/adminhtml/layout/vendor_adminsample_sample_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Magento\Framework\View\Element\Template" name="sample_block" template="Vendor_AdminSample::sample.phtml"/>
        </referenceContainer>
    </body>
</page>

app/code/Vendor/AdminSample/view/adminhtml/templates/sample.phtml

<h1>Welcome to the Sample Admin Page!</h1>
<p>This is a custom admin page for the Vendor Admin Sample module.</p>

9.启用并测试模块

所有文件创建完成之后执行下面的命令来启用模块:

php bin/magento module:enable Vendor_AdminSample
php bin/magento setup:upgrade
php bin/magento cache:clean
php bin/magento cache:flush

完成之后就可以登陆到Magento后台,导航到Vendor Admin Sample > Sample Page。就可以看到自定义的后台页面了

下一篇学习一下,在之前创建的HelloWorld自定义模块中加入后端模块实现CRUD功能,并使用UI组件来创建页面 Magento2实现CRUD操作功能-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值