我正在尝试将Laravel中的默认注册表单调整为我的数据库自定义用户表;我有一个不返回值的复选框,即使选中它也不返回值。验证程序警告我,即使我选择了提交后,复选框字段也是必需的。
这是复选框:
<!--checkbox-->
<div class="form-group row">
<label for="usertype" class="col-md-4 col-form-label text-md-right">Type Utilisateur</label>
<div class="col-md-6">
<input type="checkbox" name="check[]" value="normal"/> Normal
<input type="checkbox" name="check[]" value="admin"/> Admin
<input type="checkbox" name="check[]" value="super"/> Super
@if ($errors->has('usertype'))
<span class="help-block">
<strong>{{ $errors->first('usertype') }}</strong>
</span>
@endif
</div>
</div>
编辑:验证器
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
'telephone' => ['required', 'numeric'],
'usertype' => ['required', 'string'],
]);
}
注意:我从“验证”中删除了用户类型,但注册页面上的注册不会刷新,并且不会出现错误或任何警报
答案 0 :(得分:0)
在您的input
元素内,而不是name="check[]"
上将其更改为name="usertype[]"
。
答案 1 :(得分:0)
您当前正在将复选框的值作为check
提交给Laravel,而不是name
:
name="check[]"
您可以将验证器调整为以下内容:
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
'telephone' => ['required', 'numeric'],
'check' => ['accepted'],
]);
}
有关更多信息,请查看https://laravel.com/docs/5.2/validation#rule-accepted。如果您需要复选框,则应该使用accepted
来验证复选框。
在完成控制器操作中的验证之后,请确保您不只是返回验证器。如果有问题,验证器将引发异常,因此您只需在验证调用后放置要运行的任何代码即可。