use*_*937 6 php validation laravel
根据Laravel 文档,bail
规则应该在第一次验证失败后停止运行验证规则。
我在App\Http\*
命名空间外有一个文件,其中包含以下代码:
if(Validator::make($params, [
'email' => 'bail|required|email|max:60|exists:customers,email',
'password' => 'required|max:60|string',
'password' => new CustomerCheckPassword($params['email']),
]) -> fails())
throw new Exception('message here');
Run Code Online (Sandbox Code Playgroud)
像魅力一样工作,除了bail
规则来自email
属性不会在不$params['email']
被包含时停止验证customers.email
,并且继续password
。您对这个问题有什么想法或优雅的解决方法吗?
在同一文档页面的不同部分(它不会直接链接到它),它解释说bail
仅适用于当前属性。因此,例如,如果email
缺少,它将不会在 之后检查任何内容required
,但它password
是一个新属性,因此它将正常验证它。
有时您可能希望在第一次验证失败后停止对属性运行验证规则。为此,请将保释规则分配给属性:
实现此目的的sometimes
一种方法是使用该方法
Validator::make($params, [
'email' => 'bail|required|email|max:60|exists:customers,email',
'password' => 'required|max:60|string',
])->sometimes('password', new CustomerCheckPassword($params['email']), function ($input) {
// Check input to decide if rule should execute
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1955 次 |
最近记录: |