- Laravel多模塊組件 Laravel-Modules
- https://github.com/nWidart/laravel-modules
- http://www.lxweimin.com/p/09c2375a39ad
開發應用時經常會需要將應用劃分為不同的模塊,Laravel-Modules擴展使用模塊幫助管理大型應用。模塊和擴展包類似,都包含視圖、控制器、模型等子組件,但使用模塊區分功能單元時更加清晰。
Laravel-Modules擴展功能
- 自動注冊服務提供者和別名
- 自動創建模塊相關的artisan命令
- 項目根目錄下生成多模塊目錄Modules
安裝配置
查看當前Coomposer版本
$ composer -V
Composer version 1.8.5 2019-04-09 17:46:47
更新Composer到最新版
$ composer self-update
Updating to version 2.0.8 (stable channel).
Downloading (100%)
Use composer self-update --rollback to return to version 1.8.5
安裝擴展
$ composer require nwidart/laravel-modules
$ composer update
Laravel5.5新增包自動發現功能,使得Laravel更加容易對包進行安裝和啟用進行管理。當使用composer require
安裝包時,Laravel會自動注冊包的服務提供者并啟用。
發布組件
$ php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
Copied File [\vendor\nwidart\laravel-modules\config\config.php] To [\config\modules.php]
Publishing complete.
發布成功后會在config
配置目錄下生成modules.php
多模塊配置文件
自動加載
在項目資源包配置文件composer.json
的自動加載項目中的PSR-4規范中添加命令空間與路徑的映射。
$ vim composer.json
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "modules/"
}
},
將項目中修改后的自動加載寫入vendor中自動加載的類映射文件中 vendor/composer/autoload_classmap.php
。
$ composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: nwidart/laravel-modules
Package manifest generated successfully.
Generated optimized autoload files containing 4334 classes
創建模塊
創建后臺Admin模塊
$ php artisan module:make Admin
Created : D:\laravel\projects\nirvana\Modules/Admin/module.json
Created : D:\laravel\projects\nirvana\Modules/Admin/Routes/web.php
Created : D:\laravel\projects\nirvana\Modules/Admin/Routes/api.php
Created : D:\laravel\projects\nirvana\Modules/Admin/Resources/views/index.blade.php
Created : D:\laravel\projects\nirvana\Modules/Admin/Resources/views/layouts/master.blade.php
Created : D:\laravel\projects\nirvana\Modules/Admin/Config/config.php
Created : D:\laravel\projects\nirvana\Modules/Admin/composer.json
Created : D:\laravel\projects\nirvana\Modules/Admin/Resources/assets/js/app.js
Created : D:\laravel\projects\nirvana\Modules/Admin/Resources/assets/sass/app.scss
Created : D:\laravel\projects\nirvana\Modules/Admin/webpack.mix.js
Created : D:\laravel\projects\nirvana\Modules/Admin/package.json
Created : D:/laravel/projects/nirvana/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php
Created : D:/laravel/projects/nirvana/Modules/Admin/Providers/AdminServiceProvider.php
Created : D:/laravel/projects/nirvana/Modules/Admin/Providers/RouteServiceProvider.php
Created : D:/laravel/projects/nirvana/Modules/Admin/Http/Controllers/AdminController.php
Module [Admin] created successfully.
模塊創建成功后,會自動在項目根目錄下的Modules文件夾下生成Admin后臺模塊。
運行測試
運行本地開發服務器測試
$ php artisan serve
訪問后臺路由 http://127.0.0.1:8000/admin
授權登錄
在環境配置.env
中設置本地MySQL數據連接選項后,在項目根目錄下執行數據遷移,創建Laravel自帶的數據表。
$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.52 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.41 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.3 seconds)
創建后臺登錄控制器
$ php artisan module:make-controller LoginController Admin
Created : D:/laravel/projects/nirvana/Modules/Admin/Http/Controllers/LoginController.php