2017-08-27 1 views
0

Ich kann den vorhandenen Text wie Name und Adresse anzeigen, aber Bild in Bearbeitungsformat nicht anzeigen. Mein show.blade.phpZeigen Sie das vorhandene Bild im Bearbeitungsformular an und aktualisieren Sie es mit 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 

das funktioniert gut.

edit.blade.php jetzt

<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> 

, wenn ich versuche, das Formular eines diffrent Bild Pfad zu speichern ist in Datenbanktabelle gespeichert, wenn die Aktualisierung der Bilder, dh

/tmp/phpHs0Io6 

Speicher-Controller ist

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'); 
} 

und Update-Controller ist

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'); 
    } 

Antwort

0

Bevor Sie ein Bild speichern, müssen Sie zunächst prüfen, ob der Benutzer ein Bild hochgeladen hat. Ihre Art, Bild zu speichern, ist falsch, verwenden Sie dieses Muster;

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'); 
     } 
} 

Gleiche auf Update-Funktion.

0

Anstatt den Pfad direkt in die if-Bedingung zu schreiben, verwenden Sie die Funktion , um zu prüfen, ob Ihr Bild an der angegebenen Position existiert. Für weitere Informationen überprüfen Sie diese link

Verwandte Themen