【问题标题】:yii check input of two non database model if equalsyii 检查两个非数据库模型的输入是否相等
【发布时间】:2014-07-28 07:05:53
【问题描述】:

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

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

     public $newPassword;
     public $repeatPassword;

如何使用 rules() 做到这一点。 .注意 $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>

【问题讨论】:

    标签: php validation yii yii-components


    【解决方案1】:

    查看来自 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.');
    }
    

    【讨论】:

    • 是的,我已经尝试过了.. 但是当我测试它不起作用时.. 我希望只有在填写新密码时才需要该字段
    • 您可以随时write your own validator。如果您在使其工作时遇到任何问题,请出示您的代码。
    • 其实就是代码。。第一个是用户模型,第二个是视图。
    • 你能给我一个新密码和重复密码的自定义规则验证示例,只有在设置新密码时才需要?我真的在谷歌上找不到这个问题的任何例子......谢谢
    • hello lapatus.. 你为什么把它设置为安全?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    相关资源
    最近更新 更多