如何修复复选框不在Laravel中返回值

时间:2019-02-16 22:46:37

标签: php laravel web

我正在尝试将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'],
        ]);
    }

注意:我从“验证”中删除了用户类型,但注册页面上的注册不会刷新,并且不会出现错误或任何警报

2 个答案:

答案 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来验证复选框。

在完成控制器操作中的验证之后,请确保您不只是返回验证器。如果有问题,验证器将引发异常,因此您只需在验证调用后放置要运行的任何代码即可。