对于不是管理员的用户,有没有办法隐藏下拉选择框中的一些选项?
我的控制器
public function edit($id)
{
$user = User::with('roles')->findOrFail($id);
$roles = Role::all();
return view('profiles.edit', compact('roles', 'user'));
}edit.blade.php
@if(Auth::user()->hasRole(['superadministrator', 'administrator']))
<div class="row my-2">
<div class="col-md-2 font-weight-bold pt-2">Role:</div>
<div class="col-md-10">
<div class="form-group">
<select id="role" name="role" class="form-control @error('role') is-invalid @enderror" value="{{ old('role') }}">
<option value="">Choose user role...</option>
@foreach($roles as $role)
<option value="$role->display_name" {{ $user->hasRole($role->name) ? 'selected' : '' }}>{{ $role->display_name }}</option>
@endforeach
</select>
@error('role')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</div>
@endif我所做的是,如果用户是管理员,他只能在下拉列表中看到某些选项,如果他是超级管理员,则所有选项都可用……有可能吗?
发布于 2020-10-22 05:10:09
您应该有一个只能由管理员显示的项目数组。您可以使用该列表来隐藏这些项目。
@foreach($roles as $role)
@if(!in_array($role->display_name, $adminOptionsLists) ||
(in_array($role->display_name, $adminOptionsLists) &&
Auth::user()->isAdmin()) // make your own admin check condition.
)
<option
value="$role->display_name" {{ $user->hasRole($role->name) ? 'selected' : '' }}
>
{{ $role->display_name }}
</option>
@endif
@endforeachhttps://stackoverflow.com/questions/64471521
复制相似问题