Подтвердить что ты не робот

Повторить пароль не работает в 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 пусто.

4b9b3361

Ответ 1

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

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

Ответ 2

Другой подход - установить переменную $skipOnEmpty в false:

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

Это дает вам возможность сделать только поле повторного пароля, если пароль тоже имеет значение.