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'),