【发布时间】:2012-11-14 11:03:29
【问题描述】:
我正在尝试向我的模型(“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() 函数有问题吗?您知道可能是什么问题吗?
【问题讨论】:
-
您是否在customuser 或user 中为
$password_verification声明了任何属性标签? -
我在 CustomUser.php 中声明了
public $password_verification; -
在您的表单中 $user 属于 customuser 或 user 的哪一种类型?
-
我认为你必须在你的模型中将password_verification定义为public,然后才能作为属性访问。