第一次在社群寫文章,有不足和錯誤之處,請大家請及時指出?
場景
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 中,具體程式碼如下所示。
<?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 協議》,轉載必須註明作者和本文連結