我的const str = '50 Samuël 1 en 2';
console.log(str.split(/(\d+)(.+)/).filter(e => e));
模型具有彼此之间具有user
关系的不同角色,例如:admin是超级管理员的孩子。
我正尝试在我的路线上放弃这种关系,以便组织它们并避免使用类似以下路线:
inheritance
我将每个角色路线都移到了文件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之外,还有其他方法可以在路由文件中实现继承概念吗?
superadmin
尤其是我的树很长,并且在admin下有很多角色
答案 0 :(得分:1)
是的,您可以通过在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
,这意味着您可以将不同的控制器放在不同的文件夹中,例如。 App\Http\Controllers\Admin
中的管理控制器,因此您可以在app/Http/Controllers
中创建一个名为Admin
的文件夹。然后在控制器中,将命名空间更改为namespace App\Http\Controllers\Admin;
,然后将use App\Http\Controllers\Controller;
更改为要从其扩展的BaseController。
prefix
:/ {prefix} /您的路线在这里
name
:命名路由组,例如。 route('superadmin.users.add')
namespace
:您的控制器所在的位置
group
:您的路线文件在哪里
在路由文件中,您可以像添加普通来宾/网络路由一样添加路由。只需将它们一个接一个地添加,甚至可以再次将它们分组。但是以上内容已经按前缀/admin or /superadmin
进行了分组,并命名为admin. or superadmin.
,并附加了中间件,并且为了方便起见,将它们放在不同的文件夹中。
在控制台/终端中输入php artisan route:list
,然后查看结果!
使用上述方法,我总是将/admin
或/dashboard
与/
(来宾)路线分开。这样更清洁! :)
答案 1 :(得分:0)
您可以按照我认为适合您的方式将中间件分组在一起;
Route::middleware(['auth.jwt:admin'])->group(function(){
// Routes that need admin middleware access go here
Route::middleware([''auth.jwt:superadmin''])->group(function(){
// Routes that need admin AND superadmin middleware access go here
});
});
这应该允许您将中间件组彼此嵌套在一起,以提供路由的分层列表。