2017-04-07 2 views
1

So empfange ich Daten von einem Formular, das Benutzer Passwörter zurücksetzen sollten:
Altes Passwort: | Feld |
Neues Passwort: | field |
Passwort bestätigen: | Feld |
Und ich möchte in der Lage sein, eine Nachricht für den Benutzer anzuzeigen, wenn sein altes Passwort nicht mit dem übereinstimmt, was er in das erste Feld eingegeben hat. Ich möchte nicht eine völlig neue Validierungsmethode machen und möchte nur einen Fehler zur Verwendung werfen, wenn ich mein if() selbst mache. Also, wie erreiche ich diese die $ errors Variable, die in meiner Klinge AnsichtenLaravel 5.4 fügen Sie eine Nachricht zu Validator Fehler

So hier ist ein Beispiel für meine Controller Methode

public function update(Request $request){ 
    $this->validate($request,[ 
     'oldPassword' => 'required', 
     'password' => 'required|min:8|confirmed' 
    ]); 
    $user = Auth::user(); 
    if(password_verify($request->newPass,$user->password)){ 
     $user = User::find($user->id); 
     $user->password = bcrypt($request->newPass); 
     $user->save(); 
    }else{ 
     //the code for adding a new key to $errors variable 
     return back(); Or return redirect('path'); 
    } 
} 

So in der Ansicht, die ich auf diese

@if (count($errors) > 0) 
<div class="alert alert-danger"> 
    <ul> 
     @foreach ($errors->all() as $error) 
      <li>{{ $error }}</li> 
     @endforeach 
    </ul> 
</div> 
@endif 
wollen

Antwort

3

Sie können dies in Ihrem Controller tun:

$validator = Validator::make($request->all(),[ 
    'oldPassword' => 'required', 
    'password' => 'required|min:8|confirmed' 
]); 

Und dann vor Ihrer return back();, hinzufügen:

$validator->after(function($validator) { 
    $validator->errors()->add('tagName', 'Error message'); 
}); 

Mit Ihrer Nachricht.