Laravel复选框验证(O或1)

时间:2016-11-06 06:31:31

标签: php laravel validation laravel-5.3

我在这里验证一个复选框,用户必须只选择一个。

  <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我希望检查一个。 cannotRescanRes

我怎样才能实现这一目标?

2 个答案:

答案 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',    
 ]);