2016-04-18 2 views
0

Ici, j'ai la fonction de mise à jour Laravel, donc avec cette fonction mettre à jour les champs et voici l'entrée imporant PHOTO

Mon code est :

public function update($id, Requests\ArticleRequest $request) 
    { 
     $this->validate($request, [ 
      'photo' => 'image|max:10000', 
      // validate also other fields here 
     ]); 
     // checking file is valid. 
     if (!$request->file('photo')->isValid()) return redirect()->back()->withErrors(["photo" => "File is corrupt"]); 

     // file is valid 
     $destinationPath = public_path().'/images'; // upload path 
     $extension = $request->file('photo')->getClientOriginalExtension(); // getting image extension 
     $filename = str_random(5).'.'.$extension; // give a name to the image 
     $request->file('photo')->move($destinationPath, $filename); // uploading file to given path 
     // sending back with message 

     $article = Auth::user()->articles()->findOrFail($id); //if article id is unique just write Article::findOrFail($id) 
     $article_fields = $request->except('photo'); 
     $article_fields['photo'] = $filename; 
     $article->update($article_fields); 

     Alert::message('Your auction is updated', 'Wonderful!'); 

     return redirect('auctions'); 
      } 

quand je choisis une image pour mettre à jour tout photo est très bien, mais quand je veux mettre à jour d'autres fileds et photo pour rester le même à la base de données ... J'obtiens l'erreur:

Call to a member function isValid() on a non-object 

Comment puis-je sauter photo si $ request-> fichier ('photo') est vide, donc pas de nouvelle image ... CHOISI

+0

'if (! $ Request-> fichier ('photo')' est assez –

+0

mais le problème est au bas du code: $ article_fields ['photo'] = $ filename; donc cela va mettre à jour ma colonne photo ... comment sauter ça? – Andrew

+0

Vous n'avez pas besoin de mettre à jour cette colonne s'il n'y a pas de fichier. –

Répondre

0
public function update($id, Requests\ArticleRequest $request){ 
     **//check if file provided** 
     if ($request->hasFile('photo')) { 

      $this->validate($request, [ 
      'photo' => 'image|max:10000', 
      // validate also other fields here 
     ]); 
     // checking file is valid. 
     if (!$request->file('photo')->isValid()) return redirect()->back()->withErrors(["photo" => "File is corrupt"]); 

     // file is valid 
     $destinationPath = public_path().'/images'; // upload path 
      $extension = $request->file('photo')->getClientOriginalExtension(); // getting image extension 
      $filename = str_random(5).'.'.$extension; // give a name to the image 
      $request->file('photo')->move($destinationPath, $filename); // uploading file to given path 
     // sending back with message 

      $article = Auth::user()->articles()->findOrFail($id); //if article id is unique just write Article::findOrFail($id) 
      $article_fields = $request->except('photo'); 
      $article_fields['photo'] = $filename; 
      $article->update($article_fields); 

      Alert::message('Your auction is updated', 'Wonderful!'); 

      return redirect('auctions'); 
     } 
    Alert::message('Nothing to update', 'So sad!'); 
return redirect('auctions'); 
}