Laravel 使用选择框附加角色
Posted
技术标签:
【中文标题】Laravel 使用选择框附加角色【英文标题】:Laravel Attach Role using Select Box 【发布时间】:2020-06-19 23:26:50 【问题描述】:我正在尝试使用选择框为用户附加角色,但它不起作用
我有 Roles 表和 Roles 和 Users 表之间的桥接表
我知道这是多对多的关系,我应该使用复选框而不是选择框
但当时出于某种原因,我只需要为用户分配 1 个角色
所以,我必须使用选择框
有什么想法吗?
控制器
public function store(Request $request)
$this->validate($request, array(
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8',
));
$password = Hash::make($request->password);
$user = new User;
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->password = $password;
$user->save();
if ($request['user'])
$user->roles()->attach(Role::where('name','user')->first());
if ($request['editor'])
$user->roles()->attach(Role::where('name','editor')->first());
if ($request['admin'])
$user->roles()->attach(Role::where('name','admin')->first());
return redirect('users')->with('success', 'user is successfully saved');
查看
<div class="form-group">
<label class="col-12">Roles</label>
<div class="col-12">
<div class="custom-control custom-radio mb-5">
<input class="custom-control-input" type="radio" name=admin" id="example-radio1" value="admin">
<label class="custom-control-label" for="example-radio1">Admin</label>
</div>
<div class="custom-control custom-radio mb-5">
<input class="custom-control-input" type="radio" name=pharmacy" id="example-radio2" value="editor">
<label class="custom-control-label" for="example-radio2">Editor</label>
</div>
<div class="custom-control custom-radio mb-5">
<input class="custom-control-input" type="radio" name=company" id="example-radio3" value="user">
<label class="custom-control-label" for="example-radio3">User</label>
</div>
</div>
</div>
【问题讨论】:
【参考方案1】:我认为这里的复选框可能比单独的无线电输入更好。
<input type="checkbox" name="roles[]" value="admin"><label>Admin</label>
<input type="checkbox" name="roles[]" value="editor"><label>Editor</label>
<input type="checkbox" name="roles[]" value="user"><label>User</label>
在 Laravel 方面:
// find the ids of the roles submitted by name
$role_ids = Role::whereIn('name', $request->input('roles', []))->pluck('id');
// attach any ids needed
$user->roles()->attach($role_ids);
【讨论】:
以上是关于Laravel 使用选择框附加角色的主要内容,如果未能解决你的问题,请参考以下文章
如何从 API 调用附加到 WordPress 定制器中的选择框?