確定此表單驗證的問題
P粉296080076
2023-08-31 17:10:00
<p>我正在使用 Laravel 5.8,並且我已經製作了這個控制器方法來在資料庫中建立一些記錄。 </p>
<pre class="brush:php;toolbar:false;">public function doTheUpload(Request $request)
{
try{
$request->validate([
'video' => 'nullable|mimes:mp4',
'video_thumb' => 'required|mimes:jpg,png,jpeg',
'video_name' => 'required',
'video_desc' => 'nullable',
'available_download' => 'nullable',
],[
'video.mimes' => 'video file format is not valid',
'video_thumb.required' => 'uploading video thumbnail is required',
'video_name.required' => 'you must enter name of video',
'video_thumb.mimes' => 'image thumbnail file format is not valid',
]);
// Do the upload process
}catch(\Exception $e){
dd($e);
}
}</pre>
<p>但這將不起作用並返回此錯誤:</p>
<h2><strong>給定資料無效。 </strong></h2>
<p>這基本上是因為表單驗證請求,當我從方法中刪除這些驗證時,它會運作得很好。 </p>
<p>那麼那些傳回此錯誤的表單請求驗證出了什麼問題? </p>
<p>如果你知道,請告訴我...我非常感謝您們的任何想法或建議。 </p>
<p>謝謝。 </p>
您必須準確指定要驗證的內容:
我的程式碼範例:
當你使用 Laravel 的驗證時,你應該讓 Laravel 處理錯誤,因為當規則失敗時,Laravel 會自動拋出例外。 因此,第一個建議是不要在驗證例程中使用 try-catch 區塊。
如 Laravel 文件所述: p>
此外,我建議您不要在控制器中使用驗證,因為根據良好實踐,建議創建單獨的 formRequest 進行驗證,因此您應該稍微修改控制器以包含驗證器類別:
現在您必須建立一個表單請求,也許使用 php artisan make:request UploadVideoRequest# 此命令將在
app/Http/Requests
下建立一個表單請求類,您應將其填充為:透過使用此方法,Laravel 驗證使用者輸入並透過異常管理任何錯誤。
問候。