Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii检查两个非数据库模型的输入是否相等_Php_Validation_Yii_Yii Components - Fatal编程技术网

Php yii检查两个非数据库模型的输入是否相等

Php yii检查两个非数据库模型的输入是否相等,php,validation,yii,yii-components,Php,Validation,Yii,Yii Components,我想比较模型中的两个输入 class User extends CActiveRecord { public function tableName() { return '{{user}}'; } public $newPassword; public $repeatPassword; 如何使用规则()完成此操作。请注意,$newPassword和$repeatPassword不是数据库模型 这是我的看法 <div c

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

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

     public $newPassword;
     public $repeatPassword;
如何使用规则()完成此操作。请注意,$newPassword和$repeatPassword不是数据库模型

这是我的看法

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

参见yii维基

public function rules() {
    return array(
        array('newPassword', 'required'),
        array('repeatPassword', 'required'),
        array('newPassword', 'compare', 'compareAttribute'=>'repeatPassword'),
    );
}
或者你可以


是的,我已经试过了。。但是当我测试它不起作用的时候。。我希望只有在填写新密码时才需要该字段,您可以随时输入。如果您在使其工作时遇到任何问题,请显示您的代码。实际上,这就是代码。。第一个是用户模型,第二个是视图。您能给我一个新密码和重复密码的自定义规则验证示例吗?只有设置了新密码时才需要这个示例?我真的在谷歌上找不到这个问题的任何例子。。谢谢Shello lapatus。。你为什么把它设为安全的?
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.');
}