我正在尝试将一个属性添加到我的模型之一(“CustomUser”),该模型继承了我的模型“User”。
我想在“createUser”形式中使用此属性作为验证密码字段。我想使用虚拟属性,因为我无法修改只有一个字段“password”的数据库。
但是,当我尝试获取包含表单的视图时,会显示以下错误:
未定义属性“User.password_verification”。
这是发生错误的行:
echo $form->labelEx($user,'password_verification');
echo $form->textField($user,'password_verification',array('size'=>30,'maxlength'=>40));
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'),
);
...
}
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()
功能存在问题吗?你知道可能出现什么问题吗?
答案 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()...)
对不起。
度过美好的一天
迈克尔