public function actionUpdate($id = null) { $model = new User(); if ($model->load(\Yii::$app->request->post())) { $request = \Yii::$app->getRequest()->post('User'); $id = $request['id']; if ($id) { $model = User::findOne($id); } $model->firstName = $request['firstName']; $model->lastName = $request['lastName']; $model->username = $request['username']; $model->email = $request['email']; if ($request['password_hash']) { $model->scenario = 'default'; $model->setPassword($request['password_hash']); } else { $model->scenario = 'update'; } $model->generateAuthKey(); if ($model->save()) { $r = new \yii\rbac\DbManager(); $role = new \yii\rbac\Role(); $role->name = $request['authType']; if (!$id) { $r->assign($role, $model->id); } else { if ($request['authType']) { $r->revokeAll($model->id); $r->assign($role, $model->id); } } $this->redirect(['user/index']); } else { print_r($model->getErrors()); exit; } } if ($id) { $model = User::find()->where(['id' => $id])->one(); $model->scenario = 'update'; } return $this->render('update', ['model' => $model]); }