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

问题描述:

I want to compare two input in my model

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

     public $newPassword;
     public $repeatPassword;

how can i do this using rules() . . note that $newPassword and $repeatPassword is none database model

this is my view

<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>

我想比较模型中的两个输入 p>

  class 用户扩展CActiveRecord 
 {
公共函数tableName()
 {
返回'{{user}}'; 
} 
 
 public $ newPassword; 
 public $ repeatPassword; 
  code>   pre> 
 
 

如何使用rules()来完成此操作。 。 请注意$ newPassword和$ repeatPassword是无数据库模型 p>

这是我的视图 p>

 &lt; div class =“row”&gt;  
&lt;?php echo $ form-&gt; labelEx($ model,'newPassword');  ?&gt; 
&lt;?php echo $ form-&gt; textField($ model,'newPassword',array('size'=&gt; 60,'maxlength'=&gt; 128));  ?&gt; 
&lt;?php echo $ form-&gt;错误($ model,'newPassword');  ?&gt; 
&lt; / div&gt; 
 
&lt; div class =“row”&gt; 
&lt;?php echo $ form-&gt; labelEx($ model,'repeatPassword');  ?&gt; 
&lt;?php echo $ form-&gt; textField($ model,'repeatPassword',array('size'=&gt; 60,'maxlength'=&gt; 128));  ?&gt; 
&lt;?php echo $ form-&gt;错误($ model,'repeatPassword');  ?&gt; 
&lt; / div&gt; 
  code>  pre> 
  div>

See validation from yii wiki

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

or you can 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.');
}