Yii2:在注册模型中添加assign角色

问题描述 投票:0回答:1

我正在使用Yii2基本模板,我想在用户注册时分配角色。

请检查以下代码:

public function signup()
{
    if (!$this->validate()) {
        return null;
    }

    $user = new User();
    $user->fname = $this->fname;
    $user->mname = $this->mname;
    $user->lname = $this->lname;
    $user->address = $this->address;
    $user->username = $this->username;
    $user->email = $this->email;
    $user->setPassword($this->password);
    $user->generateAuthKey();

    $auth = new DbManager;
    $auth->init();
    $getrole = $auth->getRole($this->role);
    $auth->assign($getrole, Yii::$app->user->id);

    return $user->save() ? $user : null;
}

现在,问题在于当用户注册时,将保存用户数据并插入新的分配,但用户ID不正确。

yii2 yii2-basic-app rbac
1个回答
1
投票

您需要知道用户ID才能将角色附加到它,并且在将用户保存到数据库之前无法知道它。因此,您需要先使用已保存模型中的ID保存用户和分配角色:

if ($user->save()) {
    $auth = new DbManager;
    $auth->init();
    $getrole = $auth->getRole($this->role);
    $auth->assign($getrole, $user->id);

    return $user;
}
© www.soinside.com 2019 - 2024. All rights reserved.