<?phpnamespace frontend\models; UseYii; UseYii\base\model;/** * Signup form*/classSignupformextendsmodel{ Public $mobile; Public $captcha; Public $password; /** * @inheritdoc*/ Public functionrules () {return [ [[' Mobile ', ' captcha ', ' Password '], ' trim ', [[' Mobile ', ' captcha ', ' Password '], ' required ', [[' Mobile ', ' match ', ' pattern ' = '/^1[3|4|5|7|8][0-9]{9}$/'], [[' Mobile ', ' unique ', ' targetclass ' = ' \common\models\user ', ' message ' = ' The mobile number has been registered! ‘], [[' Password ', ' match ', ' pattern ' = '/^\s+$/'], [[' Password '], ' string ', ' length ' = [6, 32]], [[' Captcha '], ' captcha ', ]; } /** * @inheritdoc*/ Public functionAttributelabels () {return [ ' Mobile ' + ' phone number ', ' captcha ' = ' Verification code ', ' Password ' + ' password ' ]; } Public functionwritesession () {$session= Yii::$app-session; $session-open (); $session[' mobilesignuptimeout '] = Time() + 600; $session[' mobilesignup '] =$this-Mobile; $session[' mobilesignuppassword '] =$this-password; }}
usercontroller.php
if($step!== ' 2 ') { $model=NewSignupform (); $model->load (Yii::$app->request->post ()); if(Yii::$app->request->Isajax) {Yii::$app->response->format = Response::Format_json; returnActiveform::validate ($model); } if(Yii::$app->request->ispost &&$model-Validate ()) { $model-writesession (); if($this->_sendmsg ($model-mobile)) {Yii:: info ("User registered to send SMS verification code successfully! Phone Number: {$model->mobile} "); Yii::$app->session->setflash (' sentsuccess '); } Else{Yii:: Warning ("User registration to send SMS verification code failed!") Phone Number: {$model->mobile}, Description: ". YII::$app->smser->message); Yii::$app->session->setflash (' failedtosend ', ' verification code failed to send, please try again! ‘); } return $this->redirect ([' Signup ', ' step ' = ' 2 ')]); }
signup.php
if($step!== ' 2 ') { $model=NewSignupform (); $model->load (Yii::$app->request->post ()); if(Yii::$app->request->Isajax) {Yii::$app->response->format = Response::Format_json; returnActiveform::validate ($model); } if(Yii::$app->request->ispost &&$model-Validate ()) { $model-writesession (); if($this->_sendmsg ($model-mobile)) {Yii:: info ("User registered to send SMS verification code successfully! Phone Number: {$model->mobile} "); Yii::$app->session->setflash (' sentsuccess '); } Else{Yii:: Warning ("User registration to send SMS verification code failed!") Phone Number: {$model->mobile}, Description: ". YII::$app->smser->message); Yii::$app->session->setflash (' failedtosend ', ' verification code failed to send, please try again! ‘); } return $this->redirect ([' Signup ', ' step ' = ' 2 ')]); }
YII2 rules validation rule, Ajax verifies that the mobile phone number is unique