yii2 - Yii2:在注册模型中添加分配角色
问题描述
我正在使用 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 不正确。
解决方案
您需要知道用户 ID 才能为其附加角色,并且在将用户保存到数据库之前您无法知道它。因此,您需要先保存用户并使用已保存模型中的 ID 分配角色:
if ($user->save()) {
$auth = new DbManager;
$auth->init();
$getrole = $auth->getRole($this->role);
$auth->assign($getrole, $user->id);
return $user;
}
推荐阅读
- javascript - textureLoader 不适用于法线贴图
- node.js - 节点 AWS SDK v3:Lambda 函数中的“事件”和“上下文”参数的类型?
- azure-ad-b2c - 在 Azure B2C 中获取刷新令牌,Azure AD App 是第三方 IDP
- c# - Entity Framework Core 关系跟踪
- artifactory - Artifactory:以非递归方式下载最新发布的构建的所有根文件
- python - pywinauto 看不到通过 inspect.exe 可见的元素
- javascript - 为什么我的购物车增量计数器不起作用?
- python - Python线性规划——连续夜班调度优化约束
- reactjs - 在 React 组件中测试异步代码(useEffect + fetch)
- lua - 有没有办法使用 Lua 在 Wireshark 中为自定义协议创建配置文件?