【问题标题】:Laravel validation checkboxLaravel 验证复选框
【发布时间】:2016-09-17 15:22:39
【问题描述】:

我正在使用 laravel 注册功能来注册用户。我添加了一个复选框,用户需要在其中接受条款和条件。我只想在选中复选框时用户注册。我可以在 laravel 中使用“必需”验证吗?这是我的验证功能:

 return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'checkbox' =>'required',
    ]);

当我使用这样的函数时,laravel 会为复选框提供所需的错误,即使它被选中。

这是复选框的html

<input type="checkbox" name="checkbox" id="option" value="{{old('option')}}"><label for="option"><span></span> <p>Ik ga akkoord met de <a href="#">algemene voorwaarden</a></p></label>

希望大家能帮帮我!

【问题讨论】:

  • 您的表单是什么样的?您是否检查了开发工具中的实际发布数据?可能 html 是错误的,所以数据没有被发布。重要提示 - 如果您使用的是现代 IDE,请安装 xdebug 并设置断点
  • 它会起作用,只要确保输入值不是空字符串或假。而'checkbox' =>'required'只要key是输入name属性的值就可以了。
  • 谢谢你!您可以将此作为答案发布吗?这样我就可以接受并支持它

标签: php validation laravel checkbox


【解决方案1】:

您的验证规则必须与您的 html 表单字段的 name 属性相关:

 return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'option' =>'required', //not checkbox
    ]);

【讨论】:

  • 对不起,我只是在 stackoverflow 上使用了复选框来明确它是一个复选框。我的电脑上的名字是一样的。我编辑了问题。
【解决方案2】:

使用accepted 规则。

正在验证的字段必须为 yes、on、1 或 true。这对于验证“服务条款”的接受很有用。

您的案例样本:

 return Validator::make($data, [
    'firstName' => 'required|max:255',
    'lastName' => 'required|max:255',
    'email' => 'required|email|max:255|unique:users',
    'password' => 'required|confirmed|min:6',
    'checkbox' =>'accepted'
]);

【讨论】:

  • 这是服务条款复选框的正确答案。
  • 这绕过了服务器端条款,如果手动发布则接受验证。解决方案是先接受,然后再要求。
【解决方案3】:

使用 required_without_all 作为复选框:

return Validator::make($data, [
        'firstName' => 'required|max:255',
        'lastName' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
        'checkbox' =>'required_without_all',
    ]);

参考:https://laravel.com/docs/5.1/validation#available-validation-rules

【讨论】:

    【解决方案4】:

    它会起作用,只要确保输入值不是空字符串或假。而'checkbox' =>'required'只要key是输入name属性的值就可以了。

    【讨论】:

      【解决方案5】:

      我非常沮丧,因为我使用的代码将复选框值作为布尔值返回。

      如果你有类似的情况可以使用以下规则:

      [
       'checkbox_field' => 'required|in:1',
      ]
      

      【讨论】:

        猜你喜欢
        • 2016-06-21
        • 2017-03-19
        • 2017-06-10
        • 2016-07-27
        • 1970-01-01
        • 2017-05-18
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多