问题描述
我正在尝试显示与 roles
相关的 user
,但不幸的是 userRoles
未在选择选项中显示与用户相关,请帮助我如何匹配,谢谢。
注意:- 我正在使用 spaite laravel permission
文档
控制器
public function edit(User $user)
{
$data = [
'isEdit' => true,'user' => $user,'roles' => Role::where('guard_name','=','web')->select(['id','name'])->get(),'userRole' => $user->getRoleNames(),// i am getting userRole in array related to user
// ['employe']
];
// return $data['userRole'];
return view('cms.user_management.add-user',$data);
}
html 视图
<div class="col-md-6">
<div class="form-group">
<label>Role <span class="text-danger">*</span></label>
<select class="form-control" name="roles[]">
<option selected="selected" disabled >please
select</option>
@foreach ($roles as $item)
<option value="{{ $item->name }}"{{ $userRole ==
$item->name ? ' selected' : '' }}>{{ $item->name }}</option>
@endforeach
</select>
</div>
<span class="text-danger">{{ $errors->first('roles') ?? null }}
</span>
</div>
解决方法
在您的 HTML 中尝试以下更改
如果 $userRole
是数组,则使用 in_array
检查 $item->name 是否存在于数组中。
'userRole' => $user->getRoleNames()->toArray(),
html 视图
{{ in_array($item->name,$userRole) ? 'selected' : '' }}
<div class="col-md-6">
<div class="form-group">
<label>Role<span class="text-danger">*</span></label>
<select class="form-control" name="roles[]">
<option selected="selected" disabled>please select</option>
@foreach ($roles as $item)
<option value="{{ $item->name }}"{{ in_array($item->name,$userRole) ? 'selected' : '' }}>{{ $item->name }}</option>
@endforeach
</select>
</div>
<span class="text-danger">{{ $errors->first('roles') ?? null }}</span>
</div>
,
您可以使用它来获取与当前用户关联的角色或
Auth::user()->roles->pluck('name');
对于任何特定的用户角色。
User::find($id)->roles->pluck('name')