如果其中任何一條規則失敗,它將被停止
而且這里也一樣,不是嗎?
uj5u.com熱心網友回復:
根據檔案https://laravel.com/docs/9.x/validation#stopping-on-first-validation-failure:
有時您可能希望在第一次驗證失敗后停止對屬性運行驗證規則。為此,請將保釋規則分配給該屬性。
也許它對于簡單的驗證沒有用,但是如果第一次驗證失敗,您可能有一個驗證closure或unique想要避免的驗證。
假設您有這樣的驗證
$request->validate([
'title' => 'max:255|unique:posts'
]);
如果不使用bail,盡管驗證失敗,但unique:posts仍會訪問您的資料庫以尋找唯一的帖子。max:255
或進行閉包驗證:
$request->validate([
'title' => [
'max:255',
function ($attribute, $value, $fail) {
$posts = Post::where('title', 'LIKE', $value)->count();
if ($posts > 0) {
$fail('The '.$attribute.' is invalid.');
}
},
],
]);
max:255想象一下,有 500K 帖子,盡管失敗了,但仍然在尋找具有相同標題的帖子。
uj5u.com熱心網友回復:
Buddy 看看報錯資訊,你會發現在提供“bail”的時候只勾選了一個驗證條件
//when "bail" is not provided
$request->validate([
'foo' => 'required|min:5|in:er,err,erro,error'
]);
/*
#messages: array:1 [
"foo" => array:2 [
0 => "The foo must be at least 5 characters."
1 => "The selected foo is invalid."
]
]
*/
//when "bail" is provided
$request->validate([
'foo' => 'bail|required|min:5|in:er,err,erro,error'
]);
/*
#messages: array:1 [
"foo" => array:1 [
0 => "The foo must be at least 5 characters."
]
]
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441324.html
