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));

具体路由规则自己写,到这里就完成了。

经验分享 程序员 微信小程序 职场和发展