Laravel 編集時に画像データを空で送信しても保持する方法
解決したいこと
編集機能を一つのメソッドですべて行えるようにしたく実装中です。
該当するソースコード
Recipecontroller
public function update(RecipeRequest $request, $id)
{
$recipe = Recipe::find($id);
$user = \Auth::user();
$path = $this->saveImage($request->file('image'));
if($recipe->image !== ''){
\Storage::disk('public')->delete('recipe/'.$recipe->image);
}
$recipe->update($request->only([
'name','category_id',
]));
$recipe->update([
'image' => $path,
]);
session()->flash('success','レシピを編集しました');
return redirect()->route('recipes.index');
}
edit.blade.php
<label>
画像:
@if($recipe->image !== '')
<div class="image" style="background-image:url({{ \Storage::url($recipe->image) }})"></div>
@else
<div class="image" style="background-image:url({{ asset('images/no_image.png') }})"></div>
@endif
<input type="file" name="image">
</label>
</div>
<div>
<input class="button" type="submit" value="更新">
</div>
自分で試したこと
編集時に画像は選択せずに更新ボタンを押すと
if($recipe->image !== ''){
\Storage::disk('public')->delete('recipe/'.$recipe->image);
}
この部分でno_imageデータに変わってしまいます。
画像は更新せず、かつ元のデータも保持するにはどうすればよいでしょうか?
よろしくお願いします。
0 likes