Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 6:文件夹中的命名路由不';无法获取用户对象_Laravel_Routes - Fatal编程技术网

Laravel 6:文件夹中的命名路由不';无法获取用户对象

Laravel 6:文件夹中的命名路由不';无法获取用户对象,laravel,routes,Laravel,Routes,我在这个路径app/Http/Controllers/Admin中有一个UsersController,它具有默认的编辑功能 public function edit(User $user) { dd($user); } 这条路呢 Route::namespace('Admin')->group(function (){ Route::get('adminUsers', 'UsersController@index')->name('adminUsers');

我在这个路径app/Http/Controllers/Admin中有一个UsersController,它具有默认的编辑功能

public function edit(User $user)
{
    dd($user);
}
这条路呢

Route::namespace('Admin')->group(function (){
   Route::get('adminUsers', 'UsersController@index')->name('adminUsers');
   Route::get('adminEditUser/{id}', 'UsersController@edit')->name('adminEditUser');
   Route::get('adminDeleteUser/{id}', 'UsersController@delete')->name('adminDeleteUser');
}))

因此,所有控制器都会在其前面获得“Admin”文件夹名称,而不是为每个控制器添加它。现在我有了这个观点

@foreach($users as $user)
      <tr>
          <td>{{ $user->name }}</td>
          <td>{{ $user->email }}</td>
          <td><a href="{{ route('adminEditUser', $user->id) }}" class="btn btn-sm btn-primary">Edit</a>
              <a href="{{ route('adminDeleteUser', $user->id) }}" class="btn btn-sm btn-primary">Delete</a></td>
      </tr>
@endforeach
并且$user对象没有任何用户数据(id为1的用户已经存在)


这是为什么?如何解决这个问题?

您的路由参数名为
id
而不是
user
。参数名称必须与隐式路由模型绑定的类型暗示相匹配

Route::get('adminEditUser/{user}', 'UsersController@edit')->name('adminEditUser');
现在它将匹配您拥有的方法签名:

public function edit(User $user)
在您的例子中,您只是得到了一个新的
用户
对象的依赖项注入,而不是发生任何模型绑定

“Laravel自动解析路由或控制器操作中定义的雄辩模型,其类型提示变量名称与路由段名称匹配。”


您的路由参数名为
id
而不是
user
。参数名称必须与隐式路由模型绑定的类型暗示相匹配

Route::get('adminEditUser/{user}', 'UsersController@edit')->name('adminEditUser');
现在它将匹配您拥有的方法签名:

public function edit(User $user)
在您的例子中,您只是得到了一个新的
用户
对象的依赖项注入,而不是发生任何模型绑定

“Laravel自动解析路由或控制器操作中定义的雄辩模型,其类型提示变量名称与路由段名称匹配。”