タイトル通りですが、もうちょっと詳細に見ておこう
例えば以下のようにリソースコントローラーを作成するとします
まずRoute設定
php artisan make:controller ImageController --resource
// route設定
Route::resource('images', ImageController::class);
画像の編集画面でupdateを行う場合
// edit.blade.php
<form method="post" action="{{ route('owner.images.update', ['image' => $image->id]) }}" enctype="multipart/form-data">
<input type="file" name="image" id="image" />
</form>
name=”image” とparameterの名前が同じで、且つファイルを未選択した場合、ImageControllerのほうでは、$request->image; がnullではなく$image->idの値が参照される。ファイルを選択した場合なら、ちゃんと選択したファイルが参照されるので問題がありません。
// ImageController.php
public function update(Request $request, string $id)
{
// ファイル未選択の場合(nullではなく、$idの値が参照されてしまう)
$image = $request->image;
}
これを回避するために、name=”uploadImage”など、別の名前にすればいいです。
コメント