Laravel: невозможно переместить файл, если я использую пользовательский класс запроса формы - PullRequest
0 голосов
/ 16 ноября 2018

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

Вот мой контроллер:

(...)
class ArticleController extends Controller{ 

  public function store(StoreArticleRequest $request){
    $article = new Article;

    if ($request->hasfile('image')){
     $name= rand(1, 10000).$request->file('image')->getClientOriginalName() ;
     $move = $request->file('image')->move(public_path().'/images/articles/', $name);
     $article->image = $name;
    }

   $article->title = request('title');
   $article->preview = request('preview');
   $article->text = request('content');
   $article->user_id = \Auth::user()->id;
   $article->source = request('source');


   $article->save();
   return view('admin.dashboard');
 }

... а вот класс запроса формы:

(...)
class StoreArticleRequest extends FormRequest{

   public function authorize(){
    return true;
   }

   public function rules(){
    return [
        'title' => 'required|unique:articles',
        'source' => 'required',
    ];
   }

public function messages(){
 return [
    'title.required' => 'foo',
    'title.unique' => 'bar',
    'source.required'  => 'baz',
 ];
 }

}

Таким образом, , хотя файл перемещен в требуемое место , я получаю сообщение об ошибке:

Symfony \ Component \ HttpFoundation \ File \ Exception \ FileNotFoundException
The file "/tmp/php9lQ7wd" does not exist

Если я использую тот же код, но если я изменяю аргумент метода store в ArticleController, ошибки не возникает, и файлы перемещаются нормально:

public function store(Request $request){
   (...the rest of the code in this method is exactly the same...)

Я что-то не так делаю?Есть ли способ это исправить?TIA, Ognjen

* Версия Laravel: 5.7

ОБНОВЛЕНИЕ: решено

Не было никакого странного поведения Laravel, просто недостаток моей концентрации.Проблема была в том, что я забыл добавить следующую строку в метод хранения (при использовании StoreArticleRequest):

$validated = $request->validated();
...