报错edit() must be an instance of App\User, none given

Error edit() must be an instance of App\User, none given

我创建了一个 UserController.php

use App\User;
//

class UsersController extends Controller
{
//

    public function edit($id, User $user){
      $user = $user->find($id);
      return view('admin.user.edit' , compact('user'));
    }

 //


}

并编辑视图

但是当我想访问这个 url

url('/users/'. $user->id .'edit')

我遇到了这个错误

Error edit() must be an instance of App\User, none given

!?

错误表明 edit() 函数需要 $user_id 和 User 实例,但您只提供了 $user_id。如果是这种情况,您的代码应如下所示:

public function edit($id){
      $user = User::find($id);
      return view('admin.user.edit' , compact('user'));
}

确保你的路线是这样的:

Route::get(/users/{id}/edit', 'UsersController@edit');

然后将其用作:

url('/users/'. $user->id .'/edit');

url("/users/{$user->id}/edit");

然后你的控制器应该是:

public function edit($id) {
  $user = User::find($id);
  return view('admin.user.edit' , compact('user'));
}