По умолчанию проверенный валидатор Laravel добавляет сообщение об ошибке в исходное поле, а не в поле, которое обычно содержит подтвержденное значение.
'password' => 'required|confirmed|min:8',
Есть ли простой способ расширить валидатор или использовать какой-либо трюк, чтобы заставить его всегда показывать ошибку в поле подтверждения вместо исходного поля?
Если я не могу дважды ввести свой пароль, ошибка кажется более подходящей для поля подтверждения, а не для исходного поля пароля. Или, может быть, это просто наш аналитик UX, получающий nitpicky …
Один из способов сделать это – использовать same
правило, а не 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()); } // ...
$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(); }
не$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(); }
Одно из решений, которое быстро приходит на ум, – это просто отобразить ошибки password_confirmation
поле password_confirmation
.
Если это не сработает для вас, просто пометьте поле password_confirmation
как пароль и поле password
как подтверждение пароля, чтобы при наличии ошибок он отображался рядом с меткой password_confirmation
а не меткой password
.
В противном случае нетрудно добавить свой собственный метод проверки.