首页 > 解决方案 > 当两个不同的路由组内有相同的路由时,如何管理 Blade 中的路由?

问题描述

我在两个不同的路由组中创建了两个资源控制器。一位用户 一位管理员

   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');
    })

我正在使用“路线”关键字来分配路线。我这样做是因为我想为两者使用相同的视图文件。

这是刀片文件

<form action='{{route('projects.update', $project)}}' method="POST">
                @method('PUT')
                @csrf
    ....
    </form>

当我在/admin/projects中时,它按预期使用admin.projects 资源路由,但是当我在/dashboard/projects时,它应该使用仪表板资源路由,但它正在使用admin.projects.update 路由

而且当我从 web.php 评论/删除管理项目路由时,它工作正常。

让我知道为什么会这样。什么是最好的解决方案。

标签: phplaravelroutesrouter

解决方案


运行此命令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


推荐阅读