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);
经验分享 程序员 微信小程序 职场和发展