Laravel验证:保释规则无效

根据Laravel Documentationbail规则应在首次验证失败后停止运行验证规则。

我在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');

工作得像咒符一样,当bail不包含email时,$params['email']属性的customers.email规则不会停止验证,并继续进行{{1 }}。您对此问题有任何想法或优雅的解决方法吗?

sunyirui 回答:Laravel验证:保释规则无效

在同一文档页面的不同部分(不会直接链接到该页面),它说明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
});
本文链接:https://www.f2er.com/3164795.html

大家都在问