簡體   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