Laravel 验证复选框

Posted

技术标签:

【中文标题】Laravel 验证复选框【英文标题】:Laravel validation checkbox 【发布时间】: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属性的值就可以了。 谢谢你!您可以将此作为答案发布吗?这样我就可以接受并支持它 【参考方案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
    ]);

【讨论】:

对不起,我只是在 *** 上使用了复选框来明确它是一个复选框。我的电脑上的名字是一样的。我编辑了问题。【参考方案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',
]

【讨论】:

以上是关于Laravel 验证复选框的主要内容,如果未能解决你的问题,请参考以下文章

验证失败后的 Laravel 复选框状态

如何验证是不是在laravel中选中了复选框?

Laravel 对名为数组的复选框进行验证

如何验证单选按钮/复选框并且必须在 laravel 中选择一个

如何在 laravel 身份验证期间附加到用户创建多个复选框

当当前输入等于数组内的值时,Laravel 验证 required_if(带有输入文本的复选框)