完成了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博客