2
私は更新ページに行くとデータベースから読み込まれる編集フォームを持っています。イメージ部分以外はすべて正常に動作します。私が新しい画像を提出しないと、古い画像も削除されます。 画像を編集フォームでプレロードする
この
は私のコントローラpublic function update(ItemRequest $request){
$item = Item::find($request['id']);
$filename=null;
$image = $request->file('image');
if($request->hasFile('image'))
{
if($image->isValid()){
$extension = $image->getClientOriginalExtension();
$uploadPath = public_path(). '/uploads';
$filename = rand(111,999). '.'. $extension;
$image->move($uploadPath, $filename);
}
}
$item->title = $request['title'];
$item->category_id = $request['category_id'];
$item->price = $request['price'];
$item->description = $request['description'];
$item->image = $filename? $filename: $item->image;
$item->image = $filename;
if($item->save()){
if(!is_null($filename)){
$item_image = new Item_Images;
$item_image->image = $filename;
$item_image->item_id = $item->id;
$item_image->published = 1;
$item_image->save();
}
$request->session()->flash('alert-success','Item updated successfully.');
} else
$request->session()->flash('alert-error','Can not update item now. Plese tyr again!!.');
return redirect()->route('products');
}
とフォーム
@if($item['image'])
<div class="form-group">
{!! Form::label('inputImage', 'Existing Image', array('class'=> 'col-sm-2 control-label')) !!}
<div class="col-sm-10">
<img src="{!!asset('/uploads/'. $item['image'])!!}" />
</div>
</div>
@endif
<div class="form-group">
{!! Form::label('inputImage', 'Image', array('class'=> 'col-sm-2 control-label')) !!}
<div class="col-sm-10">
{!! Form::file('image', ['class'=>'form-control', 'id'=>'inputImage']) !!}
</div>
</div>
まず私は、データベース内の画像があるかどうかを確認し、存在する場合、それがページに示されている上の画像のため、対応付け分野であります。そこにはfile
フィールドがあります。
フォームのファイルフィールドに現在のイメージを値としてロードすることは可能ですか?または、これは何らかの形でコントローラーロジックで実行する必要がありますか?
しかし、私は 'if($ request-> hasFile( 'image'))' .. –
@JasonPaddle私は答えを更新しました。 –
ありがとう。これは問題を解決します! –