laravel8多模块、多应用和多应用路由
1、安装多应用模块
composer require nwidart/laravel-modules
2、执行命令,config文件夹下生成一个modules.php配置文件
php artisan vendor:publish --provider="NwidartModulesLaravelModulesServiceProvider"
3、修改config文件夹下的modules.php,修改两个地方
// 默认的命名空间是modules 我这里修改成了 app namespace => App, // app 就是你的路径 你想把模块放在那里 就改路径的地址 modules => base_path(app),
4、修改composer.json文件,在"autoload": 加上 "Modules\": "Modules/"
"autoload": { "psr-4": { "App\": "app/", "Modules\": "Modules/" } }
5、添加新模块Admin
php artisan module:make Admin
6、重新加载composer
composer dump-autoload
7、多模块路由配置
在app/Http/Kernel.php中的$middlewareGroups数组中添加以下代码
admin=> [ IlluminateRoutingMiddlewareSubstituteBindings::class, ],
在app/Providers/RouteServiceProvider.php中的boot方法中添加以下代码prefix是路由前缀,表示我们访问Admin模块的路由都需要加上这个前缀
Route::prefix(admin) ->middleware(admin) ->namespace($this->namespace) ->group(base_path(routes/admin.php));
在根目录下的routes文件夹创建新的admin.php路由文件,我们用这个文件管理Admin模块的路由
<?php use AppAdminHttpControllersAdminController; use IlluminateSupportFacadesRoute; Route::get(/index, [AdminController::class, index]);
控制器的代码如下 访问结果
注意一:我们设置了路由前缀prefix是admin使用后台路由的时候需要加上这个admin 注意二:如果我们访问是404,这时候一般是以下两种情况,第一种是我们首次安装laravel并且用的是nginx服务器,第二种是我们本地用的是apache上线之后是nginx服务器,也会出现这种情况,就是除了首页/根目录可以访问,其他目录都是404,我们修改public目录下的nginx.htaccess配置文件即可,将以下代码复制进去
location / { try_files $uri $uri/ /index.php?$query_string; }
404
修改伪静态之后
8、更多用法详见文档
9、多模块视图
return view(‘模块名::控制器.方法名’);
return view(admin::manager.create);