所以我有一個 Laravel 表單來收集資料,我使用相同的表單來創建和更新表。問題是我只希望在輸入欄位包含資料時對其進行驗證,這是我的驗證邏輯。
$validated = $request->validate([
'site_name' => 'sometimes|string',
'site_email' => 'sometimes|email',
'site_keywords' => 'sometimes|string',
'site_description' => 'sometimes|string',
'site_acronym' => 'sometimes|string|max:7',
'site_favicon' => 'sometimes|mimes:jpg,png,jpeg,svg',
'site_logo' => 'sometimes||mimes:jpg,png,jpeg,svg',
'site_currency' => 'sometimes|string',
'site_currency_symbol' => 'sometimes|string',
]);
但是當表單被提交時,laravel 為空的輸入欄位回傳一個錯誤,例如它回傳一個類似“站點名稱必須是字串”的錯誤。對于第一個驗證規則。
請問我做錯了什么?
編輯
所以我接受了@roj-vroemen 的建議,并通過使用可為空驗證規則修改了我的代碼,現在它作業得很好。這是新的代碼塊
$validated = $request->validate([
'site_name' => 'string|nullable|sometimes',
'site_email' => 'email|nullable|sometimes',
'site_keywords' => 'string|nullable|sometimes',
'site_description' => 'string|nullable|sometimes',
'site_acronym' => 'string|nullable|sometimes|max:7',
'site_favicon' => 'mimes:jpg,png,jpeg,svg|nullable|sometimes',
'site_logo' => 'mimes:jpg,png,jpeg,svg|nullable|sometimes',
'site_currency' => 'string|nullable|sometimes',
'site_currency_symbol' => 'string|nullable|sometimes',
]);
uj5u.com熱心網友回復:
你會想nullable在這種情況下使用。sometimes基本上意味著它只在該欄位存在于資料中時運行該欄位的驗證。
總之:
使用nullable時要允許null值。
https://laravel.com/docs/8.x/validation#rule-nullable
sometimes如果您只想驗證在給定輸入陣列中存在的欄位,請使用。
https://laravel.com/docs/8.x/validation#validating-when-present
注意:您可能需要確保過濾掉空值,因為包含的欄位null仍然存在:
$validated = array_filter($validated);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/365893.html
上一篇:SpringSecurityAuthenticationManagerauthenticate()方法如何能夠檢查發送的用戶名和密碼是否正確?
