我正在执行更改用户密码的功能。在用户模型中,我创建了三个变量,如下所示。
public $oldPassword;
public $newPassword;
public $repatePassword;
现在我需要将newPassword和repare密码一起比较,并在模型中添加了followinf规则。
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('username, password', 'required'),
array('username', 'length', 'max'=>20),
array('password', 'length', 'max'=>255),
array('oldPassword', 'findPassword', 'on' => 'changePwd'),
//array('repatePassword','compare','compareAttribute'=>'newPassword', 'on'=>'changePwd'),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('id, username, password', 'safe', 'on'=>'search'),
);
}
我有以下表格。
<div class="row">
<?php echo $form->labelEx($model,'Old Password'); ?>
<?php echo $form->passwordField($model,'oldPassword',array('size'=>20,'maxlength'=>20)); ?>
<?php echo $form->error($model,'oldPassword'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'New Password'); ?>
<?php echo $form->passwordField($model,'newPassword',array('maxlength'=>255)); ?>
<?php echo $form->error($model,'newPassword'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'Repate Password'); ?>
<?php echo $form->passwordField($model,'repatePassword',array('maxlength'=>255)); ?>
<?php echo $form->error($model,'repatePassword'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Update'); ?>
</div>
现在,当我在两个字段中确切地输入相同的值时,它仍然告诉我值不相同。这是为什么?
答案 0 :(得分:2)
将以下规则添加到rules()
方法。
array('oldPassword,newPassword,repatePassword','required','on'=>'changePwd')
如果没有属性规则,该属性将不会大量分配给模型,因此无法进行任何验证。
或者,如果您只想允许分配,则可以将required
更改为safe
,而不是实际需要属性,尽管在这种情况下required
对我有意义。
根据您的规则,它说它们不匹配的原因是因为没有分配newPassword
,所以将空字符串与您的预期密码进行比较。