2016-08-01 7 views
0

私はソーシャルメディアアプリケーションのように働いていますが、私のコントローラでは、ステータスアップロードのために動作していない場合、ファイルとビデオのuloadはうまく動作します。これは正しい形式です。ここに私のコントローラは、このコードは、コードのその部分は決してなぜ私のコントローラがlaravelで動作しないのですか

else if($validator->fails()) 
{ 
    $userStatus = new Status(); 
    $userStatus -> status_text = $text; 
    $userStatus -> type = 3; 
    $userStatus -> users_id = Auth::user()->id; 
    $userStatus -> save(); 

    Flash::success('Your status has been posted'); 
    return redirect(route('class')); 
} 
+0

どのようなエラーが表示されますか? – jonju

+0

エラーはありません。else if($ validator-> fails()) { $ userStatus = new Status(); $ userStatus - > status_text = $ text; $ userStatus - > type = 3; $ userStatus - > users_id = Auth :: user() - > id; $ userStatus - > save(); Flash :: success(あなたのステータスは公開されました); returnリダイレクト(route( 'class')); }この部分がうまくいかない... – Shuvo

+0

検証**が失敗した場合、レコードをデータベースに保存しようとしていますか? – jonju

答えて

0

を働いていない。このコントローラでは

パブリック関数のGetClass(リクエスト$リクエスト) {

if (Input::has('post_comment')) 
{ 
    $status=Input::get('post_comment'); 
    $commentBox=Input::get('comment_text'); 
    $selectedStatus=Status::find($status); 

    $selectedStatus->comments()->create([ 
     'comment_text'=>$commentBox, 
     'user_id'=>Auth::user()->id, 
     'status_id'=>$status 

     ]); 
    Flash::message('Your comments has been posted'); 
    return redirect(route('class')); 
} 

if(Input::has('status-text')) 
{ 
    $text=e(Input::get('status-text')); 
    $rules = [ 
     'status_text'=>'required|string', 
    ]; 
    $validator = Validator::make($request->all(), $rules); 


    if(Input::hasFile('status_image_upload')) 
    { 
     $rules['status_image_upload'] = 'image'; 
     $validator = Validator::make($request->all(), $rules); 
     if($validator->fails()) 
     { 
      $image = $request->file('status_image_upload'); 
      $imageName = str_random(8).'_'.$image->getClientOriginalName(); 
      $image->move('status_images', $imageName); 
      $userStatus = new Status(); 
      $userStatus -> status_text = $text; 
      $userStatus -> image_url = $imageName; 
      $userStatus -> type = 1; 
      $userStatus -> users_id = Auth::user()->id; 
      $userStatus -> save(); 

      Flash::success('Your status has been posted'); 
      return redirect(route('class')); 
     } 
    } 
    else if ($validator->fails()) 
    { 
     $userStatus = new Status(); 
     $userStatus -> status_text = $text; 
     $userStatus -> video_url = $request['video_url']; 
     $userStatus -> type = 2; 
     $userStatus -> users_id = Auth::user()->id; 
     $userStatus -> save(); 

     Flash::success('Your status has been posted'); 
     return redirect(route('class')); 
    } 
    else if($validator->fails()) 
    { 
     $userStatus = new Status(); 
     $userStatus -> status_text = $text; 
     $userStatus -> type = 3; 
     $userStatus -> users_id = Auth::user()->id; 
     $userStatus -> save(); 

     Flash::success('Your status has been posted'); 
     return redirect(route('class')); 
    } 
} 


    return view('class',[ 
    'posts'=>status::orderBy('id','DESC')->get() 
    ]); 

}

です実行される。この部分

else if ($validator->fails()) 
{ 
    $userStatus = new Status(); 
    $userStatus -> status_text = $text; 
    $userStatus -> video_url = $request['video_url']; 
    $userStatus -> type = 2; 
    $userStatus -> users_id = Auth::user()->id; 
    $userStatus -> save(); 

    Flash::success('Your status has been posted'); 
    return redirect(route('class')); 
} 

すなわち、あなたのコードの上else ifブロックは、一種のそれをブロックしているため。 else ifブロックで同じ条件を使用しています。これは、上記のelse ifの条件が失敗した場合、もう一方が失敗することを意味します。また、両方の条件で使用しているvalidation rulesも同じです。

+0

はい私は理解できます。私にこれのための解決策を与えることができますか? – Shuvo

+0

実際には、その部分は必要ありません。上記の 'else if'ブロックはあなたがそのコードで達成しようとしていることを行います。違いは 'video_url'だけです。 '$ userStatus - > video_url = $ request ['video_url'];'を$ userStatus - > video_url =($ request ['video_url']!= null)に置き換えてください。 $ request ['video_url']:上記のコードでは ";"、そうであればcです。 – jonju

+0

また、 'else if($ validator-> failed())'を 'else if($ validator-> passes())'に変更しようとします。 – jonju

関連する問題