Laravel8多模块、多应用

Laravel8多模块、多应用

安装 laravel-modules

composer require nwidart/laravel-modules

执行,注册应用,成功后在config文件夹下会生成一个modules.php

php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

修改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 App\Home\Http\Controllers\HomeController;
use Illuminate\Support\Facades\Route;
Route::get('/', [HomeController::class, 'index']);

api.php(接口路由)

<?php
use App\Api\Http\Controllers\ApiController;
use Illuminate\Support\Facades\Route;
Route::get('/', [ApiController::class, 'index']);

admin.php(后台路由)

<?php
use App\Admin\Http\Controllers\AdminController;
use Illuminate\Support\Facades\Route;
Route::get('/', [AdminController::class, 'index']);

在app/Http/Kernel.php中的$middlewareGroups数组中添加以下代码

'admin'=> [
    // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

在app/Providers/RouteServiceProvider.php中的boot方法中添加以下代码

Route::prefix('admin')
	->middleware('admin')
	->namespace($this->namespace)
	->group(base_path('routes/admin.php'));

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

                       

点击阅读全文

上一篇 2023年 6月 12日 am10:49
下一篇 2023年 6月 12日 am10:51