1、安装多应用模块
composer require nwidart/laravel-modules
2、执行命令,config文件夹下生成一个modules.php
配置文件
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
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'=> [
\Illuminate\Routing\Middleware\SubstituteBindings::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 App\Admin\Http\Controllers\AdminController;
use Illuminate\Support\Facades\Route;
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
修改伪静态之后