2016-04-10 12 views
1

Ich benutze Laravel 5, um eine Benutzerprotokollierungsseite zu erstellen, und ich validate() -Funktion, um die E-Mail-, Kennwort- und first_name-Felder zu überprüfen.Laravel-Validierung gibt leeres Fehlerarray zurück

Benutzer-Controller

class UserController extends Controller{ 

    public function getDashBoard(){ 
     return view('dashboard'); 
    } 
    public function postSignUp(Request $request){ 

     $this->validate($request,[ 
      'email'=>'required|email|unique:users', 
      'first_name'=>'required|max:120', 
      'password'=>'required:min:4' 
     ]); 

     $user=new User(); 
     $user->email=$request['email'];; 
     $user->first_name=$request['first_name']; 
     $user->password=bcrypt($request['password']);; 
     $user->save(); 
     Auth::login($user); 
     return redirect()->route('dashboard'); 
    } 
} 

Diese Funktion richtig funktioniert und wenn Daten, die sie wieder auf die vorherige Seite ungültig ist. Ich habe folgenden Code verwendet, um Fehlermeldungen in der Datei "welcome.blade.php" anzuzeigen.

@if(count($errors)>0) 
     <p>Error occurred</p>    
    @endif 

Bei Validierungsfehler, kehrt sie zurück zur Startseite bt die obige Fehlermeldung nicht angezeigt wird (count ($ fehler) ist immer gleich 0 ist, wenn ich überprüfen). Was ist das Problem hier?

routes.php

Route::group(['middleware'=>['web']],function(){ 

    Route::get('/', function() { 
     return view('welcome'); 
    }); 

    Route::post('/signup',['uses'=>'[email protected]','as'=>'signup']); 

    Route::post('/signin',['uses'=>'[email protected]','as'=>'signin']); 

    Route::get('/dashboard',[ 
     'uses'=>'[email protected]','as'=>'dashboard' 
    ]); 
}); 
+0

hilft Haben Sie versucht, '@if (errors- $> hat()) 'anstatt es zu zählen? – henriale

+0

es funktioniert auch nicht – chamathabeysinghe

+0

Was ist die Art von '$ Fehler '? es sollte eine Instanz von 'ViewErrorBag' – henriale

Antwort

0

Try this:

$validator = Validator::make($request->all(), [ 
     'email'=>'required|email|unique:users', 
     'first_name'=>'required|max:120', 
     'password'=>'required:min:4' 
    ]); 

    if ($validator->fails()) { 
     return redirect('/signin') 
        ->withErrors($validator) 
        ->withInput(); 
    } 

    $user=new User(); 
    $user->email=$request['email'];; 
    $user->first_name=$request['first_name']; 
    $user->password=bcrypt($request['password']);; 
    $user->save(); 
    Auth::login($user); 
    return redirect()->route('dashboard'); 

Lassen Sie mich wissen, wenn es Sie

+0

sein NOP noch ist Array Fehler leer – chamathabeysinghe

+0

Versuchen zu setzen: return Redirect ('/') -> withErrors ($ validator) -> withInput(); anstelle des obigen Codes. – BKF

Verwandte Themen