如何在软删除模型上使用资源控制器的 show 方法?

Ron*_*den 3 php routing laravel

因此,我调用了一个资源控制器,ProjectController并添加了软删除并将其用作存档。

Route::get('project/archive', 'ProjectController@trash')->name('project.archive');
Route::resource('project', 'ProjectController');
Run Code Online (Sandbox Code Playgroud)

在这个档案中,我有一个项目列表。

public function trash()
{
    $projects = Project::onlyTrashed()->get();
    return view('projects.archive', compact('projects'));
}
Run Code Online (Sandbox Code Playgroud)

现在我想用show方法查看这些项目。

在我的\App\Providers\RouteServiceProvider我补充说:

Route::bind('project', function ($value) {
    return \App\Project::withTrashed()->find($value);
});
Run Code Online (Sandbox Code Playgroud)

但是这样,我就可以编辑项目。

我试图绑定project/show, project/{project}/show,但这不起作用。

如何show在垃圾项目上使用我的资源控制器的方法?

我完整的 ProjectController 看起来像:

Route::get('project/archive', 'ProjectController@trash')->name('project.archive');
Route::resource('project', 'ProjectController');
Run Code Online (Sandbox Code Playgroud)

Ron*_*den 6

通过在\App\Providers\RouteServiceProvider.

Route::bind('project', function ($value) {
    if (Route::currentRouteName() === 'project.show') {
        return \App\Project::withTrashed()->find($value);
    }
    return \App\Project::find($value);
});
Run Code Online (Sandbox Code Playgroud)

希望这会帮助其他人。