为了账号安全,请及时绑定邮箱和手机立即绑定

为什么方法注入对某些控制器方法不起作用?

为什么方法注入对某些控制器方法不起作用?

PHP
叮当猫咪 2021-11-05 16:00:03
我有这三个路由规则: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);

    });

}


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信