gpt4 book ai didi

Laravel:有没有办法将路由组织成层次树

转载 作者:行者123 更新时间:2023-12-02 03:23:11 24 4
gpt4 key购买 nike

我的user模型具有不同的角色,彼此之间具有继承关系,例如:admin是superadmin的子级。

我试图在我的路线上放弃这种关系,以便组织它们并避免如下路线:

Route::group(['namespace' => 'Admin\MultiDispatch', 'middleware' => ['auth.jwt:superadmin|admin']], function () {

});

我将每个角色路由移至文件 Admin.phpSuperAdmin.php并需要 routes.php 中的文件:

 /*ADMIN ROLES*/
Route::group(['middleware' => ['auth.jwt:admin']], function () {
require base_path('routes/roles/Admin.php');
});

/*SUPERADMIN ROLES */
Route::group(['middleware' => ['auth.jwt:superadmin']], function () {
require base_path('routes/roles/SuperAdmin.php');
});

superadmin.php 中,我再次需要 Admin.php 文件,因为 superadmin 应该扩展所有 admin 路由:

 <?php
require base_path('routes/roles/Admin.php');

但似乎 Admin.php 中存在的端点仅可供 superadmin 访问。除了在管理路由中提及 super 管理员之外,还有其他方法可以在路由文件中实现继承概念吗?

 /*ADMIN ROLES*/
Route::group(['middleware' => ['auth.jwt:admin,superadmin']], function () {
require base_path('routes/roles/Admin.php');
});

尤其是我的树很长,admin下有很多角色

最佳答案

是的,您可以通过在 routes 中创建新的路由文件来完全分离它们。文件夹然后映射它们。

  • 创建admin.phpsuperadmin.php您的/routes中的路线文件夹。
  • 转到app/Providers/RouteServiceProvider.php
  • 如果您想为它们拥有单独的 Controller ,请为它们创建单独的命名空间:
    public function map()
{
...
$this->mapAdminRoutes();
$this->mapSuperAdminRoutes();
...
}

protected function mapAdminRoutes()
{
Route::prefix('admin')
->middleware(['web', 'auth.jwt:admin'])
->namespace('App\Http\Controllers\Admin')
->name('admin.')
->group(base_path('routes/admin.php'));
}

protected function mapSuperAdminRoutes()
{
Route::middleware('web', 'auth.jwt:superadmin')
->namespace('App\Http\Controllers\SuperAdmin')
->name('superadmin.')
->group(base_path('routes/superadmin.php'));
}

检查namespace ,这意味着您可以将不同的 Controller 放在不同的文件夹中,例如。 App\Http\Controllers\Admin 中的管理 Controller ,这样你就可以在 app/Http/Controllers 中创建一个文件夹叫Admin 。然后在 Controller 中将命名空间更改为 namespace App\Http\Controllers\Admin;然后use App\Http\Controllers\Controller;找到您从中扩展的 BaseController。

prefix :/{prefix}/your-routes-here
name :命名您的路线组,例如。 route('superadmin.users.add')
namespace :你的 Controller 在哪里
group :你的路由文件在哪里

在路由文件中,您可以像添加普通访客/Web 路由一样添加路由。只需将它们一一添加,甚至重新分组即可。但上面已经按前缀分组:/admin or /superadmin ,并命名为admin. or superadmin. ,并附加中间件,并位于不同的文件夹中,以方便使用。

类型php artisan route:list在您的控制台/终端中查看结果!

通过上述内容,我总是将我的 /admin 分开或/dashboard来自/ ( guest )路线。这样就干净多了! :)

关于Laravel:有没有办法将路由组织成层次树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com