Есть форма для регистрации пользователя и в ней поля для пароля и его подтверждения
<div class="simple">
<?php echo CHtml::activeLabelEx($userlist,'psw'); ?>
<?php echo CHtml::activePasswordField($userlist,'psw',array('size'=>40,'maxlength'=>40)); ?>
</div>
<div class="simple">
<?php echo CHtml::label('Подтверждение пароля','cpsw'); ?>
<?php echo CHtml::passwordField('cpsw','',array('size'=>40,'maxlength'=>40)); ?>
</div>
Поле psw - поле базы и оно описано в моделе AR
cpsw - его нет в базе и данное поле ввода для того чтобы проверить пароль перед сохранением.
Поставил следующее правило пролверки
public function rules()
{
return array(
…
array('psw','compare','compareAttribute'=>'cpsw','on'=>'insert'),
…
);
}
При попытке сохранить получаю ошибку что поля cpsw нет в моделе
Как выполнять подобные проверки.
И еще вопрос. Если редактирую пользователя и оба поля для ввода и подтверждения пароля не заполнены хочу чтобы пароль остался старым.
Решение вижу одну, в методе beforeSave() из базы получать значение пароля присваивать полю psw и сохранять .