Проверка Laravel required_if не работает - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть поля электронной почты и пароля, в которых я хочу, чтобы они были обязательны только в том случае, если значение поля add_user равно 1. Это моя проверка:

public function rules() {
    return [
        'add_user' => ['required'],
        'password' => ['required_if:add_user,1', 'min:8'],
        'email' => ['required_if:add_user,1', 'email', 'max:255'],
    ];
}

Эта не работает, она всегда выдает ошибку, даже если значение равно 0. Я заполняю значение add_user с помощью jquery. У меня есть выпадающий список, что если пользователь щелкнул по опциям, значение add_user равно 0, но при вводе значение равно 1. Значения верны, но проверка не работает. Может кто-нибудь помочь мне разобраться?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Хорошо. Понятно.

Я добавил свойство проверки на nullable, и теперь оно работает.

return [
    'add_user' => ['required'],
    'password' => ['required_if:add_user,1', 'min:8', 'nullable'],
    'email' => ['required_if:add_user,1', 'email', 'max:255', 'nullable'],
];

Надеюсь, это когда-нибудь кому-нибудь поможет.

0 голосов
/ 08 ноября 2019

Мы проверяем два поля, которые не зависят друг от друга, значит, если user_id!=1 будет какая-то другая проверка пароля и электронной почты, поэтому нам нужно проверить это следующим образом

     $rules = [
           'type' => 'required'
         ];

     $v = Validator::make(Input::all(),$rules);

     $v->sometimes('password', 'required|min:8', function($input) {
          return $input->type == '1';
     });

Здесь мысоздайте экземпляр Validator, где требуется проверка пароля, если user_id ==1, иначе нам не нужно его проверять.

В модели вы можете сделать это.

 public function rules(){
    return [
      'user_id '     => 'required'
    ];
 }

 protected function getValidatorInstance() {
        $validator = parent::getValidatorInstance();
        $validator->sometimes('password', 'required|min:8', 
            function($input) {
            return $input->user_id== 1;
        });
        return $validator;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...