为什么验证一个表单中的两个复选框不能在laravel上工作?

时间:2017-08-31 10:18:01

标签: laravel laravel-5.3 required laravel-validation

我的视图刀片是这样的:

...
<div class="checkbox">
    <label>
        {{Form::checkbox('is_anonymous', 1, false)}} As anonymous
    </label>
    @if ($errors->has('is_anonymous'))
        <div class="help-block">
            <strong>{{ $errors->first('is_anonymous') }}</strong>
        </div>
    @endif
</div>
<div class="checkbox">
    <label>
        {{Form::checkbox('term', 1, false, array('id'=>'term'))}} I aggree
    </label>
    @if ($errors->has('term'))
        <div class="help-block">
            <strong>{{ $errors->first('term') }}</strong>
        </div>
    @endif
</div>

我的验证是这样的:

public function rules()
{
    return [
        'is_anonymous' =>'required',
        'term' =>'required'
        ...
    ];
}

如果代码已执行,则验证无效

没有出现消息。是否在复选框上验证过程是否不同?

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我遇到了这个问题。我认为这是因为当未选中复选框时,它不会包含在请求中。如果未包含在请求中,Laravel将不会尝试验证它。

我的解决方案是在实际复选框之前添加一个带默认值的隐藏输入。

{{Form::hidden('term', false)}}
{{Form::checkbox('term', 1, false, array('id'=>'term'))}} I aggree

以下是关于此行为的related question

答案 1 :(得分:0)

处理复选框时,您可以将required规则替换为accepted

如文件中所述:

  

验证字段必须为yes,on,1或true。这很有用   验证“服务条款”验收。