Laravel - не обновлять фотографию, если $request->file('photo') равен нулю

Здесь у меня есть функция обновления Laravel, поэтому с помощью этой функции я обновляю поля, а здесь - важный ввод. ФОТО

Мой код:

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

поэтому, когда я выбираю какое-либо изображение для обновления фотографии, все в порядке, но когда я хочу обновить другие поля и фотографию, чтобы они остались прежними в базе данных... я получаю сообщение об ошибке:

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

Как я могу пропустить фотографию, если $request->file('photo') пусто, поэтому новое изображение не выбрано...

1 ответ

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');
}
Другие вопросы по тегам