проверка пользовательских правил не работает-Yii2

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

это мой код в модели.
эти два объявляются как требуемые тоже в этом сценарии.

[['password','password_repeat'], 'checkPassword', 'on'=>'create'],

сценарий объявлен на actionCreate тоже.

public function checkPassword($attributes, $params)
{
if(!$this->password_repeat === $this->password)
{
$this->addError($attribute, 'Passwords do not match!');
}
}

Я пытался использовать compare проверка этих двух полей, но меня это не удовлетворит. Если вы сравните только одно поле, другое поле не будет проверено. если вы подтвердите их оба, есть вероятность, что они будут контрастировать друг с другом, когда вы удалите то, что вы ввели в одно из двух полей. Поэтому я хочу создать такой, чтобы даже вы удалили то, что у вас есть, в эти два поля, кто идет первым или нет, они будут проверены. Извините за беспокойство. Я надеюсь, ты все еще понимаешь, что я хочу. Благодарю.

PS Я не хочу использовать виджет проверки пароля (?). благодарю вас.

1

Решение

Вы просто используете эту проверку в вашем model файл как …

['password', 'compare', 'compareAttribute'=>'password_repeat',  'message' => 'Your error message'],
2

Другие решения

В вашем коде.

$this->addError($attribute, 'Passwords do not match!');

Проверьте свой атрибут $ varname, он не существует в объявлении вашей функции.

public function checkPassword($attributes, $params)

AddError не может назначить ошибку в поле формы.

0

Попытайся

<?php $form = ActiveForm::begin(['enableAjaxValidation' => true]); ?>
0