2017-01-26 23 views
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フィールドがあります。

フォームのファイルフィールドに現在のイメージを値としてロードすることは可能ですか?または、これは何らかの形でコントローラーロジックで実行する必要がありますか?

答えて

1

問題を解決するために、この行を削除します。何の画像がアップロードされなかった場合

$item->image = $filename; 

これを行うことにより、あなたはnullとしてimage設定します。

+0

しかし、私は 'if($ request-> hasFile( 'image'))' .. –

+0

@JasonPaddle私は答えを更新しました。 –

+1

ありがとう。これは問題を解決します! –

関連する問題