2

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

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

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

未定义属性“User.password_verification”。

这是发生错误的行:

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

我的用户.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()功能有问题吗?你知道可能是什么问题吗?

4

3 回答 3

0

像这样定义:

class User extends CActiveRecord { 

 $password_verification

 ....

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

于 2012-11-14T13:17:47.827 回答
0

错误

未定义属性“User.password_verification”

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

于 2012-11-14T13:46:34.287 回答
0

谢谢大家的答案。

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

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

对不起。

祝你有美好的一天

迈克尔

于 2012-11-15T10:12:20.477 回答