Повторный пароль не работает в Yii2


Я написал правила в модели следующим образом:

    public $password_repeat;

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        ....
        ....  
        ['password', 'required'],
        ['password', 'string', 'min' => 6],
        ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
    ];
}

Если я использую другой пароль в полях Password и Password Repeat, это приведет к ошибке. Итак, это означает, что это работает. Но проблема в том, что он не выдает никакой ошибки, если поле Password Repeat пустое.

 11
Author: StreetCoder, 2015-03-11

2 answers

Добавьте также обязательный тег для password_repeat. Показано ниже

return [
        ....  
        ['password', 'required'],
        ['password', 'string', 'min' => 6],
        ['password_repeat', 'required'],
        ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
    ];
 23
Author: arkoak, 2015-03-11 06:04:11

Другой подход заключается в том, чтобы установить переменную $skipOnEmpty в значение false:

return [
....  
    ['password', 'required'],
    ['password', 'string', 'min' => 6],
    ['password_repeat', 'compare', 'compareAttribute'=>'password', 'skipOnEmpty' => false, 'message'=>"Passwords don't match"],
];

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

 8
Author: Tim Cummins, 2015-10-21 09:17:53