私のYii2の高度なアプリケーションに登録フォームがあります。私のアプリケーションでは、管理者だけがユーザーを登録できます。しかし、新規ユーザーを登録すると、管理セッションのデータが破棄され、新しいユーザーのセッションデータが設定されます。私がしようとしているのは、新しいユーザーを登録するときにセッションデータを変更しないことです。管理ユーザーはセッションデータに設定する必要があります。この問題を解決する方法。セッションデータを保存せずにYii2サインアップ
public function actionSignup()
{
$model = new SignupForm();
if(Yii::$app->user->can('admin'))
{
if (($response = self::ajaxValidate($model)) !== false)
return $response;
if (self::postValidate($model))
{
try
{
$trans = Yii::$app->db->beginTransaction();
if ($user = $model->signup()) {
Yii::$app->getUser()->login($user);
}
//tagidan tushgan odamining child_left, child_right tini o'zgartirish
$under = UserModel::findOne($user->id_parent_under);
if ($under->id_child_left == 0)
$under->id_child_left = $user->id;
else
$under->id_child_right = $user->id;
$under->update(false);
ChildrenBinaryModel::insertNewUser($user);
ChildrenClassicModel::insertNewUser($user);
$parents = ChildrenBinaryModel::find()->with('user')->where(["id_child" => $user->id])->orderBy(['depth' => SORT_ASC])->all();
$c_user = $user;
foreach($parents as $p)
{
$p_user = $p->user;
if ($p_user->id_child_left == $c_user->id)
$p_user->ball_left += 100;
else
$p_user->ball_right += 100;
$p_user->update(false);
$c_user = $p_user;
}
$trans->commit();
}
catch(\Exception $e)
{
$trans->rollBack();
return $this->renderContent($e->getMessage());
}
return $this->render('index');
}
return $this->render('signup', [
'model' => $model,
]);
}else{
throw new ForbiddenHttpException;
}
}
あなたの質問にあなたのコードを更新してください。このユーザーをどのように登録していますか?コントローラ内のアクションと、使用されているユーザモデルのメソッドを表示します。 – Clyff
私の行動はすべて正常に動作します。私はデータがデータベースに追加され、新しいユーザーを作成するときにユーザーがサインアップされることを意味します。しかし、たとえば、Johnnyという名前のユーザーを追加したいとします。アクションが実行され、私のサイトにログインしているユーザーは管理者ではないJohnnyになります。しかし、私はジョニーを追加した後でも管理者がまだログに記録されるようにしようとしています – Sherzod