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

我有这三个路由规则:


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

这是我的控制器:


<?php


namespace 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,另外两种方法也有效......有人可以解释一下为什么吗?我应该怎么做才能拥有与第一种方法删除相同的行为?提前致谢。


叮当猫咪
浏览 145回答 1
1回答

catspeake

因为模型已经删除了,所以找不到了。如果你想指定如何选择模型,并且还包括软删除模型,你可以在你的 RouteServiceProvider 的 boot 方法中自定义解析逻辑,如下所示:public function boot(){&nbsp; &nbsp; parent::boot();&nbsp; &nbsp; Route::bind('user', function ($value) {&nbsp; &nbsp; &nbsp; &nbsp; return App\User::withThrashed()->find($value) ?? abort(404);&nbsp; &nbsp; });}
打开App,查看更多内容
随时随地看视频慕课网APP