我在这里验证一个复选框,用户必须只选择一个。
<label class="col-md-3 control-label" for="checkboxes">Can Resume </label>
<div class="col-md-4">
<label class="checkbox-inline" for="checkboxes-0">
<input type="checkbox" name="canRes[]" id="checkboxes-0" value="1">
Yes
</label>
<label class="checkbox-inline" for="checkboxes-1">
<input type="checkbox" name="cannotRes[]" id="checkboxes-1" value="0">
No
</label>
</div>
在控制器方法的服务器端,我正在验证:
$validator = Validator::make(Input::get(),
[
'canRes' => 'required',
'cannotRes' => 'required'
]);
验证失败,因为一个被检查而另一个是required
我希望检查一个。 cannotRes
或canRes
。
我怎样才能实现这一目标?
答案 0 :(得分:1)
您可以使用验证方法required_without_all
$validator = Validator::make(Input::get(),
[
'canRes' => 'required_without_all:cannotResume',
'cannotRes' => 'required_without_all:canResume'
]);
希望它可以帮助你。
答案 1 :(得分:0)
对于您的方案,您需要为checkbox
使用相同的名称。你可以试试这个:
<label class="col-md-3 control-label" for="checkboxes">Can Resume </label>
<div class="col-md-4">
<label class="checkbox-inline" for="checkboxes-0">
<input type="checkbox" name="canRes" id="checkboxes-0" value="1">
Yes
</label>
<label class="checkbox-inline" for="checkboxes-1">
<input type="checkbox" name="canRes" id="checkboxes-1" value="0">
No
</label>
</div>
在验证功能中,您应该使用此规则:
$validator = Validator::make($request->all(),
[
'canRes' => 'required',
]);