- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的user
模型具有不同的角色,彼此之间具有继承
关系,例如:admin是superadmin的子级。
我试图在我的路线上放弃这种关系,以便组织它们并避免如下路线:
Route::group(['namespace' => 'Admin\MultiDispatch', 'middleware' => ['auth.jwt:superadmin|admin']], function () {
});
我将每个角色路由移至文件 Admin.php
和 SuperAdmin.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.php
和superadmin.php
您的/routes
中的路线文件夹。app/Providers/RouteServiceProvider.php
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/
我是一名优秀的程序员,十分优秀!