Laravel8多模块、多应用
安装 laravel-modules
composer require nwidart/laravel-modules
执行,注册应用,成功后在config文件夹下会生成一个modules.php
php artisan vendor:publish --provider="NwidartModulesLaravelModulesServiceProvider"
修改composer.json文件,在"autoload": 加上 "Modules\": "Modules/"
"autoload": { "psr-4": { "App\": "app/", "Modules\": "Modules/" } }
修改config文件夹下的modules.php
// 默认的命名空间是modules 我这里修改成了 app namespace => App, // app 就是你的路径 你想把模块放在那里 就改路径的地址 modules => base_path(app),
现在就可以添加新的模块了,我这里添加了三个模块
php artisan module:make Api php artisan module:make Home php artisan module:make Admin
模块创建成功之后记得运行下面的代码
composer dump-autoload
给每个模块添加路由,routes添加web.php、api.php和admin.php三个文件
web.php(首页路由)
<?php use AppHomeHttpControllersHomeController; use IlluminateSupportFacadesRoute; Route::get(/, [HomeController::class, index]);
api.php(接口路由)
<?php use AppApiHttpControllersApiController; use IlluminateSupportFacadesRoute; Route::get(/, [ApiController::class, index]);
admin.php(后台路由)
<?php use AppAdminHttpControllersAdminController; use IlluminateSupportFacadesRoute; Route::get(/, [AdminController::class, index]);
在app/Http/Kernel.php中的$middlewareGroups数组中添加以下代码
admin=> [ // LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class, IlluminateRoutingMiddlewareSubstituteBindings::class, ],
在app/Providers/RouteServiceProvider.php中的boot方法中添加以下代码
Route::prefix(admin) ->middleware(admin) ->namespace($this->namespace) ->group(base_path(routes/admin.php));
具体路由规则自己写,到这里就完成了。