当两个不同的路由组中有相同的路由时,如何管理Blade中的路由?
How to manage the routes in Blade when there are same routes inside two different route groups?
我在两个不同的路由组中创建了两个资源控制器。
一个给用户
一个给管理员
Route::group([
'prefix' => 'dashboard',
"middleware" => 'auth',
"namespace" => 'User'
], function (){
Route::resource('projects', 'ProjectController');
})
Route::group([
'prefix' => 'admin',
"middleware" => 'auth',
"namespace" => 'Admin'
], function (){
Route::resource('projects', 'ProjectController');
})
我正在使用 'route' 关键字来分配路由。我这样做是因为我想对两者使用相同的视图文件。
这是 blade 文件
<form action='{{route('projects.update', $project)}}' method="POST">
@method('PUT')
@csrf
....
</form>
当我在 /admin/projects 时,它正在按预期使用 admin.projects 资源路由 但是当我我是 /dashboard/projects 它应该使用仪表板资源路由,但它正在使用 admin.projects.update 路由.
而且当我 comment/remove 管理员从 web.php 投射路由时,它工作正常。
告诉我为什么会这样。最好的解决方案是什么。
运行 这个命令 php artisan route:list
你会在两者中找到相同的别名,所以你必须使别名唯一。
这样做,
Route::group([
'prefix' => 'dashboard',
'as' => 'dashboard.',
"middleware" => 'auth',
"namespace" => 'User'
], function (){
Route::resource('projects', 'ProjectController');
});
Route::group([
'prefix' => 'admin',
'as' => 'admin.',
"middleware" => 'auth',
"namespace" => 'Admin'
], function (){
Route::resource('projects', 'ProjectController');
});
因此您需要将其用作 admin.projects.index
和 dashboard.projects.index
我在两个不同的路由组中创建了两个资源控制器。 一个给用户 一个给管理员
Route::group([
'prefix' => 'dashboard',
"middleware" => 'auth',
"namespace" => 'User'
], function (){
Route::resource('projects', 'ProjectController');
})
Route::group([
'prefix' => 'admin',
"middleware" => 'auth',
"namespace" => 'Admin'
], function (){
Route::resource('projects', 'ProjectController');
})
我正在使用 'route' 关键字来分配路由。我这样做是因为我想对两者使用相同的视图文件。
这是 blade 文件
<form action='{{route('projects.update', $project)}}' method="POST">
@method('PUT')
@csrf
....
</form>
当我在 /admin/projects 时,它正在按预期使用 admin.projects 资源路由 但是当我我是 /dashboard/projects 它应该使用仪表板资源路由,但它正在使用 admin.projects.update 路由.
而且当我 comment/remove 管理员从 web.php 投射路由时,它工作正常。
告诉我为什么会这样。最好的解决方案是什么。
运行 这个命令 php artisan route:list
你会在两者中找到相同的别名,所以你必须使别名唯一。
这样做,
Route::group([
'prefix' => 'dashboard',
'as' => 'dashboard.',
"middleware" => 'auth',
"namespace" => 'User'
], function (){
Route::resource('projects', 'ProjectController');
});
Route::group([
'prefix' => 'admin',
'as' => 'admin.',
"middleware" => 'auth',
"namespace" => 'Admin'
], function (){
Route::resource('projects', 'ProjectController');
});
因此您需要将其用作 admin.projects.index
和 dashboard.projects.index