Подтвердите, что проверка пароля не работает в Laravel

#php #laravel

Вопрос:

Мой проект основан на laravel 8 и php 7.4.

У меня есть форма регистрации, основанная на Ajax. Я прошу пользователя ввести пароль, а затем подтвердить пароль. Я обрабатываю проверку в ответе json. Все мои поля проверены правильно и работают, но я не знаю, как мне проверить поле подтверждения пароля, чтобы оно соответствовало паролю.

Лезвие

 <form id="register_forms">
       <div>
       <label for="register_password"></label>
       <input placeholder="password" id="register_password" type="password" class="input form-control @error('register_password') is-invalid @enderror" name="register_password" required autocomplete="register_password">
    
        <span class="message" id="register_password" style="color: #ff0000; display:none;" role="alert"><strong>{{ __('The password field is required.')}}</strong></span>
       </div>
    
       <div>
        <label for="register_password_confirmation"></label>
         <input placeholder="confirm Password" type="password" class="input form-control" name="register_password_confirmation" required autocomplete="new-password">
       </div>
           
   <input id="my-register" type="submit" value="Continue">

</form>
 

язык JavaScript

 <script>
   $("#my-register").click(function(e){
    e.preventDefault();
      var _token = $('input[name="_token"]').val();
      var data = $('#register_forms').serialize()
      $.ajaxSetup({
               headers: {
                   'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
               }
           });
            $.ajax({
        type: "post",
        beforeSend: function(){
                    $('.ajax-loader').css("visibility", "visible");
                },
        url: "{{ route('register') }}",
         data: $('#register_forms').serialize(),
       //data : $('#register_forms').serialize()   "amp;_token="   _token,

                dataType: 'json',
        success: function(data) {
            window.location = "https://carchainclassics.com/login";
       },
         complete: function(){
                    $('.ajax-loader').css("visibility", "hidden");
         },

       error: function (err) {
            $('.message').hide();
            if (err.status == 422) {
                $('#success_message').fadeIn().html(err.responseJSON.message);
                // display errors on each form field
                $.each(err.responseJSON.errors, function (i, error) {
                    grecaptcha.reset();
                    var el = $(document).find('span[id="' i '"]');
                    el.show();
                    
                });
            }
        }
    });
    /**Ajax code ends**/
        });


</script>
 

Контроллер

 protected function validator(array $data)
{
        'register_password' => ['required','string', 'min:8','confirmed'],
    ]);
    $validator->setAttributeNames([
        'register_password' => 'password',
    ]);
    return $validator;
}
 

Ответ №1:

@шаан, ты можешь попробовать это

 $this->validate($request, [
'name' => 'required|min:3|max:50',
'email' => 'email',
'vat_number' => 'max:13',
'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
'password_confirmation' => 'min:6'
]);
 

Комментарии:

1. Я думаю, вы неправильно истолковали мой вопрос. Пожалуйста, прочтите это один раз и посмотрите, как я обрабатываю проверку в ответе Ajax.