Yii:向模型添加属性

时间:2012-11-14 11:03:30

标签: forms yii

我正在尝试将一个属性添加到我的模型之一(“CustomUser”),该模型继承了我的模型“User”。

我想在“createUser”形式中使用此属性作为验证密码字段。我想使用虚拟属性,因为我无法修改只有一个字段“password”的数据库。

但是,当我尝试获取包含表单的视图时,会显示以下错误:

  

未定义属性“User.password_verification”。

这是发生错误的行:

echo $form->labelEx($user,'password_verification');    
echo $form->textField($user,'password_verification',array('size'=>30,'maxlength'=>40));

我的User.php:

class User extends CActiveRecord { 
... 

public function rules(){        
  return array(
    array('username, password, email', 'required'),             
    array('created_by', 'numerical', 'integerOnly'=>true),
    array('username, email', 'length', 'max'=>255),
    array('password', 'length', 'max'=>32),
    array('valid_from, valid_until, added_on', 'safe'),             
    array('username, email', 'unique'),
    array('id, type, username, password, email, valid_from, valid_until, 
    added_on,created_by','safe','on'=>'search'),
  );
...
}

我的CustomUser.php

class CustomUser extends User
{
    public $password_verification;

    public function rules()
    {
        $newRules = array(
                array('password_verification', 'required'),
                array('password_verification', 'length', 'max' => 32),
                array('password', 'compare', 'compareAttribute' => 'password_verification'),
                array('password_verification', 'safe', 'on' => 'search'),
        );
        return array_merge(User::model()->rules(), $newRules);
    }
}

您觉得我的rules()功能存在问题吗?你知道可能出现什么问题吗?

3 个答案:

答案 0 :(得分:0)

像这样定义:

class User extends CActiveRecord { 

 $password_verification

 ....

然后您的模型将能够访问此属性,因为您已将其定义为公共属性,该属性将用作Active Record的属性。

答案 1 :(得分:0)

错误

  

未定义属性“User.password_verification”

表示您将User模型传递给您的视图,但$password_verification属性仅存在于CustomUser模型中。

答案 2 :(得分:0)

谢谢大家的回答。

最后我犯了一个大错... ... __-

我在我的视图中使用User而不是CustomUser(我专注于actionCreate,我忘记了actionIndex()...)

对不起。

度过美好的一天

迈克尔