このフォーム検証の問題を特定する
P粉296080076
2023-08-31 17:10:00
<p>私は Laravel 5.8 を使用しており、データベースにいくつかのレコードを作成するためにこのコントローラー メソッドを作成しました。 </p>
<pre class="brush:php;toolbar:false;">パブリック関数 doTheUpload(Request $request)
{
試す{
$request->validate([
'ビデオ' => 'nullable|mimes:mp4',
'video_thumb' => '必須|mimes:jpg,png,jpeg',
'video_name' => '必須'、
'video_desc' => 'nullable',
'available_download' => 'nullable',
]、[
'video.mimes' => 'ビデオ ファイル形式が無効です',
'video_thumb.required' => 'ビデオサムネイルのアップロードが必要です',
'video_name.required' => 'ビデオの名前を入力する必要があります',
'video_thumb.mimes' => '画像のサムネイル ファイル形式が無効です',
]);
//アップロード処理を行う
}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 職人の make:request UploadVideoRequest を使用して、フォーム リクエストを作成する必要があります。 このコマンドは、app/Http/Requests
###挨拶。にフォーム リクエスト クラスを作成します。これに次のように入力します。 リーリー
このアプローチを使用することで、Laravel はユーザー入力を検証し、例外を通じてエラーを管理します。