在我的 Laravel 應用程式中,我有一個用戶注冊表格
在那里我有一個用戶生日的輸入欄位。
從我的控制器,我正在驗證用戶輸入。
對于生日用戶年齡必須在 18-70 之間。
對于我的用戶生日,我有d/m/Y前端的格式,但我Y-m-d在保存之前將其從我的控制器轉換為格式。
if(!empty($request->date_of_birth)){
$date = str_replace('/', '-', $request->date_of_birth);
$new_bday=date("Y-m-d", strtotime($date) );
$request->merge(['date_of_birth' => ''.$new_bday.'']);
}
現在的問題是,每次當用戶輸入無效日期時,(12/11/2021)它都會驗證并以錯誤格式顯示舊日期(先前選擇的)(2021-11-12)
為了解決這個問題,我將我的出生日期驗證更改為在我的控制器中遵循
'date_of_birth'=>['required','bail','date_format:Y-m-d',function ($attribute, $value, $fail) {
$age=Carbon::createFromFormat('Y-m-d', $value)->diff(Carbon::now())->y;
if($age<18||$age>70){
$date = str_replace('-', '/', $value);
$new_bday=date("d/m/Y", strtotime($date) );
$request->merge(['date_of_birth' => ''.$new_bday.'']);
$fail('?ge invalide. l\'age devrait être 18-70');
}
},]
但這一直給我一個錯誤說 Undefined variable: request
uj5u.com熱心網友回復:
嘗試像這樣訪問請求\request()而不是$request.
\request() 是一個輔助函式,它回傳相同的請求物件,可以從應用程式的任何地方呼叫它。
驗證和提交日期有時也會導致一些問題。為此,我建議您考慮使用一些 3rd 方工具,例如日期時間選擇器或 flatpicker。它可以更加用戶友好,并且您可以確保從客戶端輸入的日期格式良好。
看:
getdatepicker.com/4
flatpickr.js.org/examples
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367527.html
上一篇:使用Laravel8和VueJS2中的Marked決議Markdown
下一篇:限制Laravel中記錄的插入
