第一次在社区写文章,有不足和错误之处,请大家请及时指出
场景
laravel-admin 是一个可以快速帮你构建后台管理的工具,它提供的页面组件和表单元素等功能,能帮助你使用很少的代码就实现功能完善的后台管理功能。但是当后台功能不断迭代,导致原本的 Admin 目录过于庞大,不同功能模块之间如果使用相同的 Model 会导致出现一些不必要的 bug(比如访问器、修改器等对字段的修改,导致不同模块之间数据不一致),基于以上问题,利用学习《LX2 PHP 扩展包实战教程 - 从入门到发布》期间写了 an5dy/laravel-admin-modules 这个 laravel-admin 扩展包,能够实现简单地基于业务对后台进行模块拆分。
需求环境
PHP >= 7.0.0
laravel-admin >= 1.6
安装
composer require an5dy/laravel-admin-modules --dev -vvv
建议安装在 dev 下,正式线不需要安装。
使用
首先新建一个模块
php admin:module:make {name}
name:模块名
模块初始目录结构
app/{模块名}
├── Controllers
├── Models
├── Providers
│ └── {模块名}ServiceProvider.php
└── routes.php
app/{模块名}:目录用于存放相关模块文件。
app/{模块名}/Controllers:目录用于存放模块控制器文件。
app/{模块名}/Models:目录用于存放模块模型文件。
app/{模块名}/Providers:目录用于存放模块服务提供者文件,{模块名}ServiceProvider.php 文件是当前模块的 laravel 服务提供者类,用于加载模块路由等功能,需手动注册到 config/app.php 配置文件中。
app/{模块名}/routes.php:文件用于配置模块路由。
创建指定模块控制器类
php artisan admin:module:controller {module} {model} {--title=} {--stub= : Path to the custom stub file. } {--output}
module:需创建控制器的模块名。
model:当前模块 Models 目录下的模型名,可通过以下命令来生成。php artisan make:model App\{模块名}\Models\{模型名}
其它参数与 laravel-admin 创建控制器 admin:make 一致。
创建指定模块表单请求类
php artisan admin:module:request {module} {name}
module:需创建表单请求类的模块名。
name:表单请求类名称。
创建指定模块服务提供者类
php artisan admin:module:provider {module} {name}
module:需创建服务提供者类的模块名。
name:服务提供者类名称。
创建指定模块 bootstrap.php 配置文件
php artisan admin:module:bootstrap {module}
module:需创建 bootstrap.php 的模块名。
以上命令执行后的模块目录结构
app/{模块名}
├── Controllers
├── Middleware
│ └── ModuleBootstrap.php
├── Models
├── Providers
│ └── {模块名}ServiceProvider.php
├── bootstrap.php
└── routes.php
app/{模块名}/Middleware/ModuleBootstrap.php:当前模块的 bootstrap.php 文件重载中间件,需配置在 {模块名}ServiceProvider.php 中,具体代码如下所示。
use App\{模块名}\Middleware\ModuleBootstrap;
.
.
.
class {模块名}ServiceProvider extends ServiceProvider
{
public function register()
{
app('router')->aliasMiddleware('admin.bootstrap', ModuleBootstrap::class);
}
.
.
.
}
app/{模块名}/bootstrap.php:当前模块 bootstrap.php 文件,不受 laravel-admin 和其他模块的 bootstrap.php 影响,功能与 laravel-admin bootstrap.php 一致,具体参考官网。
本作品采用《CC 协议》,转载必须注明作者和本文链接
活着就意味着必须要做点什么,请好好努力!