Laravel 画像アップロード時のコードの記述について バリデーションのfileとisValidの違い
制作環境
Windows 10
Laravel : 6.18.35
Laravel/ui : 1.0
Laravel-mix : 5.0.1
Bootstrap : 4.0.0
MDBootstrap : 4.19.1
chart.js : 2.9.3
XAMPP
PHP : 7.4.3
Visual Studio Code
はじめに
プログラミング学習をはじめたばかりの素人で、今独学でLaravelの勉強をしていて、画像のアップロードについて色々見ているのですが、その中の記述で気になった記述があったので質問させてください。
気になっている記述
とある方の記述で、下記のようなコントローラへの記述がありました(一部抜粋)。
public function upload(Request $request)
{
$this->validate($request, [
'file' => [
// 必須
'required',
// アップロードされたファイルであること
'file',
// 画像ファイルであること
'image',
// MIMEタイプを指定
'mimes:jpeg,png',
]
]);
if ($request->file('file')->isValid([])) {
$path = $request->file->store('public');
$file_name = basename($path);
$user_id = Auth::id();
$new_image_data = new Image();
$new_image_data->user_id = $user_id;
$new_image_data->file_name = $file_name;
$new_image_data->save();
return redirect('/output');
} else {
気になっている箇所は(一部省略)、
public function upload(Request $request)
{
$this->validate($request, [
'file' => [
// アップロードされたファイルであること
'file',
]
]);
上記と、
if ($request->file('file')->isValid([])) {
の部分です。
質問内容
バリデーションでのfileと、isValidは両方とも記述した方がいいのでしょうか?
同じ事をしているような気がするのですが、違うのでしょうか?
リファレンスを確認したところ
バリデーションルールfileは、
「フィールドがアップロードに成功したファイルであることをバリデートします。」
isValidは、
「ファイルが存在しているかに付け加え、isValidメソッドで問題なくアップロードできたのかを確認できます。」
と記載がありました。
素人の考えで大変恐縮なのですが、バリデーションでフィールドがアップロードに成功したことの確認が取れたということは、(アップロードされているから)ファイルが存在している。
アップロードに成功しているので、問題なくアップロードができていると感じるのですが・・・。
フィールドがアップロードに成功しても、ファイルが存在しないことがあったりするのでしょうか?
同じような内容に見えて、やはり違ったことやっているので、片方だけの記述ではなく、両方記述する方がいいのでしょうか?
ご教授いただけたら、幸いです。
よろしくお願いいたします。