如何解决如何使用数据库laravel 5.8中的检查数据填充表单复选框
我的更新表格有问题,
我使用表单中的复选框创建具有多个角色分配的用户,并且当我需要更新用户时,我将所有数据放入更新表单输入字段,但复选框字段为空。有没有一种方法可以使复选框与数据库中的数据相对应?
这是我的用户模型关系
public function roles()
{
return $this->belongsToMany(Role::class)->withTimestamps();
}
这是我的榜样关系
public function users()
{
return $this->belongsToMany(User::class)->withTimestamps();
}
这是我的“编辑用户表单”
<form action="{{ route('users.update',['user'=>$user]) }}" method="POST">
@method('PATCH')
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" value="{{ old('name') ?? $user->name }}">
<span class="text-danger">{{ $errors->first('name') }}</span>
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="text" name="email" class="form-control" value="{{ old('email') ?? $user->email }}">
<span class="text-danger">{{ $errors->first('email') }}</span>
</div>
<div class="form-group">
@foreach ($roles as $role)
<label for="role">{{ $role->name }}</label>
<input type="checkbox" name="role[{{$role->id}}]" value="{{ old($role->id) }}"
@if(in_array($role->id,old('role',[]) )) checked @endif >
@endforeach
<span class="text-danger">{{ $errors->first('role') }}</span>
</div>
@csrf
<button class="btn btn-primary" type="submit">Create</button>
</form>
这是我的编辑功能
public function edit(User $user)
{
$roles = Role::all();
return view('users.edit',compact('user','roles'));
}
我只是想知道如何从数据库中将数据提取到复选框中并将其标记为已选中
解决方法
我想您应该使用用户角色ID检查角色ID:
@if(in_array($role->id,$user->roles->toArray())) checked @endif
,
最后我找到了答案
<div class="form-group">
@foreach ($roles as $role)
<label for="role">{{ $role->name }}</label>
<input type="checkbox" name="role[]" value="{{ $role->id }}"
{{ $role->users->contains($user->id) ? 'checked' : '' }}
@if(in_array($role->id,old('role',[]))) checked @endif>
@endforeach
<span class="text-danger">{{ $errors->first('role') }}</span>
</div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。