existe-t-il un moyen de masquer certaines options dans une zone de sélection déroulante pour les utilisateurs qui ne sont pas administrateurs?
Mon contrôleur
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
ce que j'étais est, si un utilisateur est un administrateur, il ne peut voir que certaines options dans la liste déroulante et s'il est un super administrateur, toutes les options sont disponibles ... est-ce possible?
Vous devriez avoir un tableau d'éléments qui ne peuvent être affichés que par les administrateurs. Vous pouvez utiliser cette liste pour masquer les éléments.
@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
@endforeach
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots