Yii2: добавление роли назначения в моделях регистрации - PullRequest
0 голосов
/ 05 сентября 2018

Я использую базовый шаблон 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;
}

Теперь проблема в том, что когда пользователь регистрируется, пользовательские данные будут сохранены, и новое назначение будет вставлено, но идентификатор пользователя будет неверным.

1 Ответ

0 голосов
/ 05 сентября 2018

Вам необходимо знать идентификатор пользователя, чтобы присоединить к нему роль, и вы не можете знать его, прежде чем сохранять пользователя в базе данных. Поэтому вам нужно сначала сохранить пользователя и назначить роль, используя идентификатор из сохраненной модели:

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

    return $user;
}
...