public function actionSignup($step = '1') { if ($step === '1') { $model = new SignupForm(); if ($model->load(Yii::$app->request->post(), '') && $model->validate()) { $model->writeSession(); if ($sent = $this->_sendMsg($model->mobile)) { Yii::info("用户注册发送短信验证码成功!手机号:{$model->mobile}"); } else { Yii::warning("用户注册发送短信验证码失败!手机号:{$model->mobile},说明:" . Yii::$app->smser->message); } return ['status' => 'success', 'data' => ['isSent' => $sent]]; } else { return ['status' => 'fail', 'data' => ['errors' => $model->getFirstErrors()]]; } } elseif ($step === '2') { $session = Yii::$app->session; $session->open(); if (empty($session['mobileSignup']) || empty($session['mobileSignupTimeout']) || $session['mobileSignupTimeout'] < time()) { return ['status' => 'fail', 'data' => ['errors' => ['对不起,请您重新注册。']]]; } $model = new SignupMobileVerifyForm(); if ($model->load(Yii::$app->request->post(), '') && $model->validate()) { if ($user = $model->signup()) { $model->clearSession(); return ['status' => 'success', 'data' => ['accessToken' => $user->access_token]]; } } return ['status' => 'fail', 'data' => ['errors' => $model->getErrors('verifyCode') ?: ['注册失败,请稍后再试。']]]; } else { throw new BadRequestHttpException('参数错误!'); } }
public function actionSignup($step = '1') { if ($step !== '2') { $model = new SignupForm(); $model->load(Yii::$app->request->post()); if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } if (Yii::$app->request->isPost && $model->validate()) { $model->writeSession(); if ($this->_sendMsg($model->mobile)) { Yii::info("用户注册发送短信验证码成功!手机号:{$model->mobile}"); Yii::$app->session->setFlash('sentSuccess'); } else { Yii::warning("用户注册发送短信验证码失败!手机号:{$model->mobile},说明:" . Yii::$app->smser->message); Yii::$app->session->setFlash('failedToSend', '验证码发送失败,请您再试一次!'); } return $this->redirect(['signup', 'step' => '2']); } $params = ['model' => $model, 'step' => $step]; } else { $session = Yii::$app->session; $session->open(); if (empty($session['mobileSignup']) || empty($session['mobileSignupTimeout']) || $session['mobileSignupTimeout'] < time()) { $session->setFlash('resignup', '对不起,请您重新注册。'); return $this->redirect(['signup']); } $signupMobileVerifyForm = new SignupMobileVerifyForm(); $signupMobileVerifyForm->load(Yii::$app->request->post()); if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($signupMobileVerifyForm); } if (Yii::$app->request->isPost && $signupMobileVerifyForm->validate()) { if ($user = $signupMobileVerifyForm->signup()) { $signupMobileVerifyForm->clearSession(); if (Yii::$app->user->login($user)) { return $this->goHome(); } } } $params = ['signupMobileVerifyForm' => $signupMobileVerifyForm, 'step' => $step]; } return $this->render('signup', $params); }