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

标签 php laravel pivot-table roles laravel-eloquent

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

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

在创建函数中,我的表单代码是...
<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 个表、用户、角色和角色用户。

用户模型关系代码是...
 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);


}

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

最佳答案

您需要发送 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>

关于php - Laravel 5.4 如何通过表单请求为用户分配角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44088045/

相关文章:

php - woocommerce - 如何获取当前产品类别的最顶级类别

php - 模型中的 Laravel 计数函数,然后是 sortBy count()

PHP Laravel 返回查看 null 变量

Excel:在数据透视表中使用列分组的 count() 的 max()

vba - excel 2010 vba循环数据透视表

mysql - 在mysql中按最小日期将一行转换为两行

php - 如何在外部域中使用 jQuery AJAX?

javascript - PHP-Jquery 自动完成与动态输入字段?

php - Codeigniter:无法将记录添加到数据库中

php - 如何解决访问 laravel 路由时出现 CORS 错误