Laravel 有时 vs 有时|需要
Posted
技术标签:
【中文标题】Laravel 有时 vs 有时|需要【英文标题】:Laravel sometimes vs sometimes|required 【发布时间】:2016-06-20 17:56:59 【问题描述】:在 Laravel 验证中 sometimes|required|email
和 sometimes|email
有什么区别?我读过 this discussion from laracasts 但对我来说仍然模棱两可
【问题讨论】:
【参考方案1】:来自文档:
在某些情况下,您可能希望针对 仅当该字段存在于输入数组中时。要快速 完成此操作,将有时规则添加到您的规则列表中
https://laravel.com/docs/5.2/validation#conditionally-adding-rules
如果我可以简化它,我会说sometimes
的意思是,如果该字段出现在请求中,则仅应用其余的验证规则。想象一下sometimes
就像一个 if 语句,在应用任何规则之前检查请求/输入中是否存在该字段。
当我在页面上有一些 javascript 会禁用一个字段时,我会使用此规则,因为当一个字段被禁用时,它不会显示在请求中。如果我简单地说required|email
,验证器将始终应用规则,而使用sometimes
规则将仅在字段出现在请求中时应用验证!希望这是有道理的。
例子:
input: []
rules: ['email' => 'sometimes|required|email']
result: pass, the request is empty so sometimes won't apply any of the rules
input: ['email' => '']
rules: ['email' => 'sometimes|required|email']
result: fail, the field is present so the required rule fails!
input: []
rules: ['email' => 'required|email']
result: fail, the request is empty and we require the email field!
【讨论】:
谢谢。据我了解,sometimes
指的是 POST 键,require
指的是它的值。所以如果需要一个字段,则键和值都应该出现在 POST 中。对吗?
您实际上可以将验证过程应用于任何旧数组,因此它可能是POST
或GET
。是的,这实际上是一种很好的解释方式。您当然可以结合sometimes
和required
规则。如果您想进一步了解它在框架中的工作原理,您可以随时查看源代码:github.com/laravel/framework/blob/5.2/src/Illuminate/Validation/… 和测试:github.com/laravel/framework/blob/5.2/tests/Validation/…以上是关于Laravel 有时 vs 有时|需要的主要内容,如果未能解决你的问题,请参考以下文章