2016-05-03 4 views
0

複数のファイルとテキストを同時に検証する際に問題が発生しています。 リクエスト全体を検証すると$request->all();ファイルルールが正しく動作しません。 'file' => 'required|mimes:png,jpeg,jpg,gif|max:3000'。 配列array('file'=> $file)のファイルのみを検証すると問題は解決しますが、この方法では他の入力を検証できません。Laravel 5.2テキストと複数ファイルの検証ツール

私は、インターネットから複数のファイルの一部を持って、そして他の入力のための私の部分を追加し、ここに私の機能です:

public function createNewPost(Request $request) { 
     $post = new Post; 
     $post->user_id = Auth::user()->id; 
     $post->title = $request->input('title'); 
     $post->body = $request->input('body'); 
     $post->status= "borrador"; 
     $post->save(); 
     $post->img = "/uploads/posts/".$post->id; 
     $post->save(); 

     $files = Input::file('file'); 
     $file_count = count($files); 
     $uploadcount = 0; 
     foreach($files as $file) { 
      $rules = array(
      'file' => 'required|mimes:png,jpeg,jpg,gif|max:3000', 
      'title' => 'required|unique:posts|max:255', 
      'body' => 'required' 
      ); 
      $messages = [ 
       'title.required' => 'Sin titulo?', 
       'body.required' => 'No has escrito nada', 
       'file.required' => 'Selecciona al menos 1 imagen.', 
       'file.mimes' => 'No puedes utilizar ese tipo de imagen, intenta con (jpg/png/jpeg).', 
       'file.max' => 'El total de imagenes no puede pesar mas de 3MB.' 
      ]; 

      $validator = Validator::make(array('file'=> $file), $rules, $messages); 
      if($validator->passes()){ 
       $destinationPath = 'uploads/posts/'.$post->id; 
       //$filename = $file->getClientOriginalName(); 
       $filename = $uploadcount.".".$file->getClientOriginalExtension(); 
       $upload_success = $file->move($destinationPath, $filename); 
       $uploadcount ++; 
      } 
     } 
     if($uploadcount == $file_count){ 
      Session::flash('success', 'Upload successfully'); 
      return Redirect::to('/admin/post/new'); 
     } 
     else { 
      return Redirect::to('/admin/post/new')->withInput()->withErrors($validator); 
     } 
    } 

答えて

2

はこれを試してみてください、そして、あなたのforeachのファイルのループを削除します。

$files = count($this->input('file')) - 1; 
foreach(range(0, $files) as $index) { 
    $rules['file.' . $index] = 'required|mimes:png,jpeg,jpg,gif|max:3000'; 
} 

Source