Php 如何在yii中为用户名添加单词?
我是我网站的管理员。当我注册一个新用户时,我想将我的用户名添加到新用户名中。例如: 我的用户名:经理Php 如何在yii中为用户名添加单词?,php,yii,Php,Yii,我是我网站的管理员。当我注册一个新用户时,我想将我的用户名添加到新用户名中。例如: 我的用户名:经理 新用户名:test 结果:管理者测试 我想验证结果。我使用了beforevalidate()并在其中添加了我的用户名: protected function beforeValidate() { $this->username = Yii::app()->user->name.'_'.$this->username; return parent::be
新用户名:test
结果:管理者测试 我想验证结果。我使用了beforevalidate()并在其中添加了我的用户名:
protected function beforeValidate()
{
$this->username = Yii::app()->user->name.'_'.$this->username;
return parent::beforeValidate();
}
但存储到数据库中的东西是:manager\u manager\u manager\u test。
事实上,我的程序在3次验证之前调用
我该怎么办?我想阅读一次beforevalidate函数。为什么不在保存之前先执行它呢?验证您知道要添加的内容的意义是什么,只需让validate不带任何内容,并在beforeSave中添加您想要的内容。您可以在创建和使用“beforeSave”时检查新记录是否添加前缀
if(end(explode('_',Yii::app()->user->name)) != $this->username){
$this->username = Yii::app()->user->name.'_'.$this->username;
}
return parent::beforeValidate();
public function beforeSave(){
parent::beforeSave();
if($this->isNewRecord())
$this->username = Yii::app()->user->name.'_'.$this->username;
return true;
}
谢谢你的回答。我采纳了你的建议,但我有个问题。当我创建一个重复的用户名时,我无法处理我的错误,我看到一个带有以下错误的页面:
CDbException\1575a\1740; CDbCommand\1583; ql语句:SQLSTATE[23000]:完整性约束冲突:密钥“username”的1062个重复条目“demo\u ITC3”。
您可以指定自定义验证。添加模型函数:公共函数checkUsername($attribute,$params){$userModel=User::model()->find('username=:username',array(':username'=>Yii::app()->User->name.'''.''.$this->username));if(!is_null($userModel)){$this->addError(属性,“存在同名用户”)}和加载项规则数组此规则:数组('username','checkUsername'),