2016-08-01 9 views
0

Ich arbeite wie eine Social-Media-Anwendung ... aber in meinem Controller letzten, wenn nicht für den Status-Upload arbeiten. aber Datei und Video Uload funktioniert gut. Was ist das richtige Format dafür? hier mein ControllerWarum funktioniert mein Controller nicht in Laravel

public function getClass (Request $ request) {

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() 
    ]); 

}

In diesem Controller ist dieser Code nicht

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

Welche Fehler bekommen Sie ?? – jonju

+0

Es gibt keinen Fehler ..... sonst if ($ validator-> failed()) { $ userStatus = new Status(); $ userStatus -> status_text = $ text; $ userStatus -> Typ = 3; $ userStatus -> Benutzer_ID = Auth :: Benutzer() -> ID; $ userStatus -> save(); Flash :: Erfolg ('Ihr Status wurde veröffentlicht'); Return Redirect (Route ('Klasse')); } dieser Teil funktioniert nicht ... – Shuvo

+0

versuchen Sie Datensatz in Datenbank zu speichern, wenn die Validierung ** fehlgeschlagen ** – jonju

Antwort

0

Der Teil des Codes arbeiten wird nie ausgeführt werden. Da der else if Block über Ihren Code heißt dieser Teil

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

hat es irgendwie blockieren. Sie verwenden die gleiche Bedingung im else if Block. Das heißt, wenn die oben genannte else if Bedingung fehlschlägt, wird auch die andere fehlschlagen. Und die validation rules, die Sie in beiden Bedingungen verwenden, sind auch gleich.

+0

ja ich kann Sir verstehen. Kannst du mir eine Lösung dafür geben ??? – Shuvo

+0

Eigentlich brauchst du diesen Teil des Codes nicht. Der obige 'else if'-Block wird tun, was Sie mit diesem Code erreichen wollen. Nur der Unterschied ist 'video_url'. Also entferne den 'else if' Teil und ersetze' $ userStatus -> video_url = $ request ['video_url']; 'mit' $ userStatus -> video_url = ($ request ['video_url']! = Null)? $ request ['video_url']: ""; 'im obigen Code und c wenn es hilft. – jonju

+0

auch versuchen, 'sonst if ($ validator-> fails())' zu 'else wenn ($ validator-> passes())' – jonju