Laravel 支持使用 stopOnFirstFailure 方法和 bail 规则来在第一个验证失败时停止验证。
它们的区别是:
stopOnFirstFailure方法是在第一个字段验证失败时就停止所有验证,它只返回第一个字段的错误信息,适用于想要立即返回的场景。bail规则只会停止当前字段的后续验证规则,会继续验证其他字段,返回所有字段的错误信息,适用于想要返回所有错误信息的场景。
使用 stopOnFirstFailure() 方法
stopOnFirstFailure() 方法用于在第一个验证失败时停止验证。
$validated = $request->validate([
'email' => 'required|email|unique:users',
'name' => 'required|min:3',
'password' => 'required|min:6'
])->stopOnFirstFailure();class UserStoreRequest extends FormRequest
{
protected bool $stopOnFirstFailure = true;
public function rules()
{
return [
'email' => 'required|email|unique:users',
'name' => 'required|min:3',
'password' => 'required|min:6'
];
}
}使用 bail 规则
bail 规则用于当前字段在第一个验证失败时停止验证。
class UserStoreRequest extends FormRequest
{
public function rules()
{
return [
'email' => 'bail|required|email|unique:users',
'name' => 'bail|required|min:3',
'password' => 'bail|required|min:6'
];
}
}
使用建议
-
如果需要尽快返回响应,使用
stopOnFirstFailure() -
如果需要收集所有字段的第一个错误,使用
bail -
在 API 开发中,
stopOnFirstFailure()通常更实用 -
在表单验证中,
bail可以提供更完整的错误信息