首页 文章

Laravel 5.4如何通过表单请求为用户分配角色?

提问于
浏览
2

我有一个用户列表,在这里我给每个用户分配一个选项,当点击“添加角色”链接时,它会显示这条路线

Route::get('admin/home/role/{user}', 'RoleController@create');

在create function中我的表单代码是......

<form method="post" action="{{ url('admin/home/role') }}">
  {{ csrf_field()   }}


   <div class="form-group">
    <select name="role" class="form-control" >
      <option value="1"> Admin </option>
      <option value="2"> Editor</option>
    </select>
   </div>

    <button type="submit" class="btn btn-primary">
        Add Role
    </button>
  </form>

管理这个表单我的POST路由是......

Route::post('admin/home/role', 'RoleController@store');

现在如何将此表单请求数据插入到role_user表中?哦!我已经有3个表,用户,角色和role_user .

用户模型关系代码是......

public function role()
{
    return $this->belongsToMany(Role::class, 'role_user');
}

角色模型关系代码是......

public function user()
{
    return $this->belongsToMany(User::class, 'role_user');
}

我的问题是如何将表单请求数据插入到role_user表中?我知道一种方式......

public function store(Request $request, User $user)
{

    $role = Role::find(1);
    $user = User::find(19);

    $role->user()->attach($user);


}

它有效,但这不是动态的 . 如何通过表单请求插入?请帮我 . 我搜索这个主题教程但没找到 .

1 回答

  • 2

    你需要发送 Role iduser id 值来存储函数

    public function store(Request $request)
    {
         $user_id=$request->input('user_id'); // get user id from post request
         $role_id=$request->input('role_id'); // get  Role id from post request
    
          /* Todo request validation*/
    
    
        $user = User::find($user_id);
        $role = Role::find($role_id);
    
    
        $user->roles()->attach($role);
    }
    

    观点:

    <form method="post" action="{{ action('RoleController@store') }}">
      {{ csrf_field()   }}
      <input type="hidden" name="user_id" value="{{ $user->id }}" /> // you need to pass $user to this view  
       <div class="form-group">
        <select name="role_id" class="form-control" >
          <option value="1"> Admin </option>
          <option value="2"> Editor</option>
        </select>
       </div>
    
        <button type="submit" class="btn btn-primary">
            Add Role
        </button>
      </form>
    

相关问题