Laravel:如果使用自定义表单请求类,则无法移动文件

时间:2018-11-16 20:55:52

标签: php laravel validation request

当尝试使用Laravel移动文件(图像)时,我遇到了一个奇怪的问题:当我创建自定义Form请求类并通过验证后,我收到错误消息,但是文件定期移动。

这是我的控制人:

(...)
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

如果我使用相同的代码,但是如果在ArticleController中更改store方法的参数,则不会出现错误,并且文件可以正常移动:

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

我做错什么了吗? 有没有办法来解决这个问题? TIA,奥格恩

* Laravel版本:5.7

更新:已解决

没有任何奇怪的Laravel行为,只是缺乏我的专注。 问题是我忘记将以下行添加到存储方法中(使用StoreArticleRequest时):

$validated = $request->validated();

0 个答案:

没有答案