2015-05-11 2 views
5

Standardmäßig fügt Laravel 'validated' validator die Fehlermeldung dem ursprünglichen Feld und nicht dem Feld hinzu, das normalerweise den bestätigten Wert enthält.Wie kann Laravel 'bestätigt' werden, um Fehler zum Bestätigungsfeld hinzuzufügen?

'password' => 'required|confirmed|min:8', 

Gibt es eine einfache Möglichkeit, den Validator oder verwenden, um einig Trick zu verlängern, es zu zwingen, immer auf dem Bestätigungsfeld um den Fehler zu zeigen, anstelle des ursprünglichen Feldes?

Wenn ich mein Passwort zweimal nicht eingeben kann, scheint der Fehler eher zum Bestätigungsfeld und nicht zum ursprünglichen Passwortfeld zu gehören. Oder vielleicht ist das nur unser UX-Analyst, der nitpicky wird ...

+0

Warum ist das wichtig, was Feld gehört es zu? Sie können ein Passwortfeld nicht automatisch ausfüllen (oder sollten es zumindest nicht), also sollte es einfach in Ordnung sein zu sagen, dass die Passwörter nicht übereinstimmen. – Wader

+0

Unsere Benutzeroberfläche enthält Validierungsnachrichten, die als Tooltips für bestimmte Felder angezeigt werden. Daher ist es wichtig, die Nachricht dort anzuzeigen, wo sie sinnvoller ist. – JustAMartin

Antwort

12

Eine Möglichkeit, darüber zu gehen ist same Regel zu verwenden, statt confirmed

// ... 

$input = Input::all(); 

$rules = [ 
    'password' => 'required|min:8', 
    'password_confirmation' => 'required|min:8|same:password', 
]; 

$messages = [ 
    'password_confirmation.same' => 'Password Confirmation should match the Password', 
]; 
$validator = Validator::make($input, $rules, $messages); 

if ($validator->fails()) { 
    return back()->withInput()->withErrors($validator->messages()); 
} 
// ... 
+1

Danke. Manchmal ist Laravel verwirrend, weil es möglich ist, ähnliche Ergebnisse auf verschiedene Arten zu erzielen. 'same' erwies sich als anpassbarer als' bestätigt' – JustAMartin

+0

super toll! – lean

0

Eine Lösung, die schnell in den Sinn kommt, ist, nur die password Fehler auf dem password_confirmation Feld anzuzeigen.

Wenn das nicht für Sie arbeiten, beschriften nur das password_confirmation Feld als Kennwort und das password Feld als Passwortbestätigung, so dass, wenn es Fehler gibt, wird es in der Nähe des password_confirmation Etikett erscheinen eher als die password Label.

Andernfalls ist es nicht schwer, eine eigene benutzerdefinierte Validierungsmethode hinzuzufügen.

1
$rules=[ 
      'username'=>'required|max:20', 
      'password1'=>'required|min:8', 
      'password2'=>'required|min:8|same:password1', 
     ]; 
     $error_messages=[ 
      'password2.same'=>'password are not the same password must match same value', 
      'password1.min'=>'password length must be greater than 8 characters', 
      'password2.min'=>'confirm-password length must be greater than 8 characters', 


     ]; 
     $validator= validator($request->all(), $rules, $error_messages); 
     if ($validator->fails()) { 
      return redirect('control_pannel/change_password') 
         ->withErrors($validator) 
         ->withInput(); 
     } 
+0

Ich versuche diesen Code und es hat für mich funktioniert –

Verwandte Themen