Php Laravel 5.4如何通过表单请求为用户分配角色?
我有一个用户列表&在这里我放置了一个选项,可以将角色分配给每个用户,因此当单击“添加角色”链接时,它将显示此路由Php Laravel 5.4如何通过表单请求为用户分配角色?,php,laravel,pivot-table,roles,laravel-eloquent,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-g
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>
public function role()
{
return $this->belongsToMany(Role::class, 'role_user');
}
public function user()
{
return $this->belongsToMany(User::class, 'role_user');
}
现在,如何将此表单请求数据插入到role_用户表中?哦我已经有3个表,用户,角色和角色用户
用户模型关系代码是
<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>
public function role()
{
return $this->belongsToMany(Role::class, 'role_user');
}
public function user()
{
return $this->belongsToMany(User::class, 'role_user');
}
角色模型关系代码是
<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>
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);
}
它可以工作,但这不是动态的。如何按表单请求插入?请帮帮我。我正在搜索此主题教程,但未找到。您需要发送
角色id
和用户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>
{{csrf_field()}}
//您需要将$user传递到此视图
管理
编辑
添加角色
显示新错误。这是。。。RoleController.php第45行中的fatalthrowable错误:在null上调用成员函数roles()。将用户模型中的公共函数role()重命名为公共函数roles()。请确保:$user->roles()->attach($role)$用户->角色()->附加($role);它是&用户模型函数是公共函数roles(){return$this->belongsToMany(Role::class,'Role_User');}问题在这里$用户id=$request->input('user')$role\u id=$request->input('role');此输入名称为user\u id&role\u id,现在将其更改为表单名称user&role,现在可以使用了。tnx贾法尔