如果等于,则检查两个非数据库模型的输入

时间:2014-07-28 07:05:53

标签: php validation yii yii-components

我想在模型中比较两个输入

  class User extends CActiveRecord
  {
    public function tableName()
    {
        return '{{user}}';
    }

     public $newPassword;
     public $repeatPassword;

我怎么能用rules()来做到这一点。 。请注意$ new密码和$ repeat密码是无数据库模型

这是我的观点

<div class="row">
    <?php echo $form->labelEx($model,'newPassword'); ?>
    <?php echo $form->textField($model,'newPassword',array('size'=>60,'maxlength'=>128)); ?>
    <?php echo $form->error($model,'newPassword'); ?>
</div>

<div class="row">
    <?php echo $form->labelEx($model,'repeatPassword'); ?>
    <?php echo $form->textField($model,'repeatPassword',array('size'=>60,'maxlength'=>128)); ?>
    <?php echo $form->error($model,'repeatPassword'); ?>
</div>

1 个答案:

答案 0 :(得分:2)

请参阅yii wiki的validation

public function rules() {
    return array(
        array('newPassword', 'required'),
        array('repeatPassword', 'required'),
        array('newPassword', 'compare', 'compareAttribute'=>'repeatPassword'),
    );
}

或者你可以write your own validation rule

public function rules() {
    return array(
        array('newPassword, repeatPassword', 'safe'),
        array('newPassword', 'checkPassword'),
    );
}

public function checkPassword($attribute,$params) {
    // return if there was no password input
    if (empty($this->newPassword) && empty($this->repeatPassword)) return;

    // if password does not match repeat password add validation error
    if ($this->newPassword != $this->repeatPassword)
        $this->addError('newPassword','Password does not match the Repeat Password.');
}
相关问题