【发布时间】:2022-01-11 09:43:46
【问题描述】:
我正在使用 Laravel 8,我在 Blade 制作了一张这样的表格:
<div class="card-body table-responsive p-0">
<table class="table table-hover">
<tr>
<th>Username</th>
<th>Email</th>
<th>Role</th>
<th>Actions</th>
</tr>
@foreach($roles as $role)
@if(count($role->users))
@foreach($role->users as $user)
<tr>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>{{ $role->name }} | {{ $role->label }}</td>
<td>
<form action="{{ route('levels.destroy' ,$user->id) }}" method="post">
@method('DELETE')
@csrf
<div class="btn-group btn-group-xs">
<a href="{{ route('levels.edit' ,$user->id) }}" class="btn btn-primary">Edit</a>
<button type="submit" class="btn btn-danger">Delete</button>
</div>
</form>
</td>
</tr>
@endforeach
@endif
@endforeach
</table>
</div>
结果完美呈现:
但现在我遇到了 Edit 和 Delete 按钮的问题,我已将 $user->id 指定为这两个按钮的参数。
当我将鼠标悬停在按钮上时,我可以看到正确定义的用户 ID:
但是当涉及到使用路由模型绑定的编辑方法时,它没有找到用户:
public function edit(User $user)
{
dd($user->id); // return null
}
但是,如果我不使用路由模型绑定并改为这样说:
public function edit($id)
{
dd($id); // return 1
}
它正确显示了用户 ID!
我不知道为什么路由模型绑定在这里不起作用,所以如果您知道出了什么问题或如何解决此问题,请告诉我...
【问题讨论】:
-
请分享您的用户编辑路线
-
你能定义它的路由吗?
-
@BhargavRangani
Route::resource('levels', LevelController::class); -
@Chando
Route::resource('levels', LevelController::class); -
你的路由是控制器中的关卡模型,你不能用用户模型访问
标签: php laravel laravel-8 route-model-binding