需求:在创建用户的时候,选择用户的角色(可以不选/单选/多选),用户角色是一个包含角色 id 的数组。
表单内容:
<input type="checkbox" name="roles[]" value="{{ $v->id }}"> {{ $v->name }}
自定义 Request rules() 方法:
public function rules()
{
$rules = [
'name' => 'required|max:255|unique:users,name',
'email' => 'required|email|max:255|unique:users,email',
'password' => 'required|max:255',
'active' => 'boolean',
'admin' => 'boolean',
// 'roles' => 'numeric|exists:roles,id', 错误的方法
];
if ( $this->request->get('roles') )
{
foreach( $this->request->get('roles') as $k=>$v )
{
$rules['roles.'.$k] = 'numeric|exists:roles,id';
}
}
return $rules;
}
当 role id 不存在报错:The selected roles.0 is invalid.
。
以上的方法用于 laravel 5.1,在 5.2 中可以直接使用 'roles.*' => 'numeric|exists:roles,id',
来验证。