Laravel 复选框验证(O 或 1)

Laravel checkbox validation (O or 1)

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

  <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.

我怎样才能做到这一点?

您可以使用验证方法required_without_all

$validator = Validator::make(Input::get(),
[
    'canRes' => 'required_without_all:cannotResume',
    'cannotRes' => 'required_without_all:canResume'

]);

希望对您有所帮助。

对于您的方案,您需要为两者使用相同的名称 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',    
 ]);