我正在尝试显示与
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')
像这样使用:-
$user->getRoleNames()->first(),