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 中选择一个