以编辑形式预加载图像

时间:2017-01-26 16:36:32

标签: php laravel

我有更新页面时从数据库填充的编辑表单。除了图像部分,一切正常。如果我不提交新图片,也会删除旧图片。

这是我的控制器

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 个答案:

答案 0 :(得分:1)

删除此行以解决问题:

$item->image = $filename;

如果没有上传图片,您可以将image设置为null