繁体   English   中英

更新 Laravel 中的用户角色

[英]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 所以任何帮助将不胜感激:) 谢谢

  1. 为您的页面提供所有角色。
  2. 如果它不存在,则添加到用户hasRole()方法。
  3. 使用FormRequest进行验证。
  4. 不要忘记使用$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM