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
可以提供更完整的错误信息