2017-08-27 31 views
0

我能够显示现有文本,如名称和地址,但无法在编辑窗体中显示图像。 我的show.blade.php在编辑表单中显示现有图像并使用laravel进行更新

@section('content') 
     <p>This is user {{ $profile->name }}</p> 
     <p>This is address {{ $profile->address }}</p> 
     <img src= "/storage/images/{{ $profile->images }}" style="width:504px;height:228px />  
@endsection 

这工作正常。

现在edit.blade.php

<div class="container"> 
    <form method="POST" action="/profiles/{{$profile->id}}" enctype="multipart/form-data"> 
    {{ method_field('PATCH') }} 
    {{ csrf_field() }} 
    <div class="form-group"> 
    name <input type="text" name="name" value="{{ $profile->name }}" /> 
    </div> 
    <div class="form-group"> 
    address <input type="textarea" name="address" value="{{ $profile->address }}" /> 
    </div> 
    <div class="form-group"> 
    @if ("/storage/images/{{ $profile->images }}") 
     <img src="{{ $profile->image }}"> 
    @else 
      <p>No image found</p> 
    @endif 
     image <input type="file" name="image" value="{{ $profile->images }}"/> 
    </div> 
    <div class="form-group"> 
     <button type="submit" class="btn btn-primary">Submit</button> 
    </div>`` 

</div> 

当我尝试保存表单更新的图像时,即一个不同势图像路径保存在数据库表

/tmp/phpHs0Io6 

存储控制器是

public function store(Request $request) 
{ 
     $this->validate($request, [ 
     'name' => 'required|max:255', 
     'address' => 'nullable' , 
    ]); 
     $profile = new profile; 
     $profile-> user_id = auth()->id(); 
     $profile-> name = $request->name; 
     $profile-> address = $request->address;   
     $request->image->store('public/images'); 
     $path = $request->image->hashName(); 
     $profile-> images = $path; 
     $profile->save(); 
     return redirect('/home'); 
} 

和更新控制器是

public function update(Request $request, profile $profile) 
    { 
     $this->validate($request, [ 
      'name' => 'required|max:255', 
      'address' => 'nullable' , 
     ]); 
      $profile->update($request->all()); 
      $profile-> name = $request->name; 
      $profile-> address = $request->address;   
      $request->image->store('public/images'); 
      $path = $request->image->hashName(); 
      $profile-> images = $path; 
      $profile->save(); 
      return redirect('/home'); 
    } 

回答

0

首先,在保存图像之前,您必须检查用户是否上传了一张;你的图像保存方式是错误的,使用这种模式;

public function update(Request $request, profile $profile) 
    { 
     $this->validate($request, [ 
      'name' => 'required|max:255', 
      'address' => 'nullable' , 
     ]); 
      $profile->update($request->all()); 
      $profile-> name = $request->name; 
      $profile-> address = $request->address;   

      if(Input::hasFile('image')){ 
      $file = Input::file('image'); 
      $destinationPath = public_path(). '/uploads/'; 
      $filename = $file->getClientOriginalName(); 
      $file->move($destinationPath, $filename); 

      //then proceeded to save user 
      $profile-> images =   
      $destinationPath.$filename; 
      $profile->save(); 
      return redirect('/home'); 
      }else{ 


      $profile->save(); 
      return redirect('/home'); 
     } 
} 

与更新功能相同。

0

不是在if条件下直接写入路径,而是使用file_exists函数来检查您的图像是否存在于给定位置。欲了解更多信息,请点击这里link

相关问题