Laravel 6:文件夹中的命名路由不';无法获取用户对象
我在这个路径app/Http/Controllers/Admin中有一个UsersController,它具有默认的编辑功能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');
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自动解析路由或控制器操作中定义的雄辩模型,其类型提示变量名称与路由段名称匹配。”