我有这三个路由规则:Route::get('/user-delete/{user}', 'UserActionsController@delete')->name('user.delete');Route::get('/user-recover/{user}', 'UserActionsController@recover')->name('user.recover');Route::get('/user-permanentdelete/{user}', 'UserActionsController@permanentDelete')->name('user.permanentDelete');这是我的控制器:<?phpnamespace App\Http\Controllers;class UserActionsController extends Controller{ public function delete(\App\User $user) {//... } public function recover(\App\User $user) {//... } public function permanentDelete(\App\User $user) {//... }}如果我转到 /user-delete/1 URL,它会起作用。但是,如果我转到 /user-recover/1 URL 或 /user-permanentDelete/1 URL,则会收到 404 错误。不知何故,依赖注入不适用于最后两种方法(recover 和 PermanentDelete),但它对 delete 方法非常有效。如果我使用 Request $request 而不是 \App\User $user,另外两种方法也有效......有人可以解释一下为什么吗?我应该怎么做才能拥有与第一种方法删除相同的行为?提前致谢。
1 回答
catspeake
TA贡献1111条经验 获得超0个赞
因为模型已经删除了,所以找不到了。
如果你想指定如何选择模型,并且还包括软删除模型,你可以在你的 RouteServiceProvider 的 boot 方法中自定义解析逻辑,如下所示:
public function boot()
{
parent::boot();
Route::bind('user', function ($value) {
return App\User::withThrashed()->find($value) ?? abort(404);
});
}
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消