[英]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.