[英]Update user roles in Laravel
我有三個用戶角色:學生、教師、管理員。
如果用戶是學生,我想在下拉列表中顯示將他們提升為教師或管理員的選項,其他角色也一樣。 教師獲得管理員和學生選項。
目前這看起來像這樣:
指數
@if ($user->role == 'admin')
<form action="/admin/users/{{ $user->id }}" method="POST">
@csrf
@method('PATCH')
<input class="hidden" name="role" value="user">
<button>Make User</button>
</form>
@else
<form action="/admin/users/{{ $user->id }}" method="POST">
@csrf
@method('PATCH')
<input class="hidden" name="role"value="teacher">
<button>Make Teacher</button>
</form>
@endif
控制器
public function update(User $user)
{
$attributes = request()->validate([
'role' => ['required', Rule::exists('users', 'role')]
]);
$user->update($attributes);
return back()->with('success', 'User Updated!');
}
我如何才能執行 if 語句來列出除分配給用戶的當前角色之外的所有角色,或者這可能更好地在控制器中完成?
是否可以將角色放在 slug 中然后運行 foreach 這樣我就不會重復代碼?
我是新的頂級 Laravel 所以任何幫助將不勝感激:) 謝謝
hasRole()
方法。$user
獲取角色以避免使用User::with('roles')->find($id)
進行 n+1 次查詢。@foreach($allRoles as $role)
@if(! $user->hasRole($role))
Your form
@endif
@endforeach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.