当两个不同的路由组中有相同的路由时,如何管理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.indexdashboard.projects.index