<?phpnamespace frontend\models; use common\models\User;use yii\base\Model;use Yii; /** * Signup form */class SignupForm extends Model{ public $username; public $email; public $password; public $rePassword; public $vitifyCode; /** * @inheritdoc */ public function rules() { return [ [‘username‘, ‘filter‘, ‘filter‘ => ‘trim‘], [‘username‘, ‘required‘], [‘username‘, ‘unique‘, ‘targetClass‘ => ‘\common\models\User‘, ‘message‘ => ‘This username has already been taken.‘], [‘username‘, ‘string‘, ‘min‘ => 2, ‘max‘ => 255], [‘email‘, ‘filter‘, ‘filter‘ => ‘trim‘], [‘email‘, ‘required‘], [‘email‘, ‘email‘],//格式必须是邮箱 [‘email‘, ‘string‘, ‘max‘ => 255], [‘email‘, ‘unique‘, ‘targetClass‘ => ‘\common\models\User‘, ‘message‘ => ‘This email address has already been taken.‘], [[‘password‘, ‘rePassword‘], ‘required‘], [[‘password‘, ‘rePassword‘], ‘string‘, ‘min‘ => 6], [‘rePassword‘, ‘compare‘, ‘compareAttribute‘ => ‘password‘, ‘message‘ => ‘两次密码必须一致‘], //两次密码必须一致 [‘vitifyCode‘, ‘captcha‘], //验证码验证 ]; } public function attributeLabels() //属性labels { return [ ‘username‘ => ‘用户名‘, ‘email‘ => ‘邮箱‘, ‘password‘ => ‘密码‘, ‘rePassword‘ => ‘重复密码‘, ‘vitifyCode‘ => ‘验证码‘, ]; } /** * Signs user up. * * @return User|null the saved model or null if saving fails */ public function signup() { if ($this->validate()) { $user = new User(); $user->username = $this->username; $user->email = $this->email; $user->setPassword($this->password); $user->generateAuthKey(); if ($user->save()) { return $user; } } return null; }}?>
<?phpnamespace frontend\controllers; use Yii;use common\models\LoginForm;use frontend\models\PasswordResetRequestForm;use frontend\models\ResetPasswordForm;use frontend\models\SignupForm;use frontend\models\ContactForm;use yii\base\InvalidParamException;use yii\web\BadRequestHttpException;use yii\web\Controller;use yii\filters\VerbFilter;use yii\filters\AccessControl;
/** * Site controller */class SiteController extends Controller{ /** * @inheritdoc */ public function behaviors() { return [ ‘access‘ => [ ‘class‘ => AccessControl::className(), ‘only‘ => [‘logout‘, ‘signup‘], ‘rules‘ => [ [ ‘actions‘ => [‘signup‘], ‘allow‘ => true, ‘roles‘ => [‘?‘], ], [ ‘actions‘ => [‘logout‘], ‘allow‘ => true, ‘roles‘ => [‘@‘], ], ], ], ‘verbs‘ => [ ‘class‘ => VerbFilter::className(), ‘actions‘ => [ ‘logout‘ => [‘post‘, ‘get‘], ], ], ]; } /** * @inheritdoc */ public function actions() { return [ ‘error‘ => [ ‘class‘ => ‘yii\web\ErrorAction‘, ], ‘captcha‘ => [ ‘class‘ => ‘yii\captcha\CaptchaAction‘, ‘fixedVerifyCode‘ => YII_ENV_TEST ? ‘testme‘ : null, ], ‘upload‘ => [ ‘class‘ => ‘frontend\widgets\ueditor\UEditorAction‘ ], ]; }
/** * Signs user up. * * @return mixed */public function actionSignup(){ $model = new SignupForm(); if ($model->load(Yii::$app->request->post())) { if ($user = $model->signup()) { if (Yii::$app->getUser()->login($user)) { return $this->goHome(); } } } return $this->render(‘signup‘, [ ‘model‘ => $model, ]);}
?>
<?php /* @var $this yii\web\View *//* @var $form yii\bootstrap\ActiveForm *//* @var $model \frontend\models\SignupForm */ use yii\helpers\Html;use yii\bootstrap\ActiveForm; $this->title = ‘Signup‘;$this->params[‘breadcrumbs‘][] = $this->title;?><div class="site-signup"> <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to signup:</p> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin([‘id‘ => ‘form-signup‘]); ?> <?= $form->field($model, ‘username‘) ?> <?= $form->field($model, ‘email‘) ?> <?= $form->field($model, ‘password‘)->passwordInput() ?> <?= $form->field($model, ‘rePassword‘)->passwordInput() ?> <?= $form->field($model, ‘vitifyCode‘)->widget(\yii\captcha\Captcha::className()) ?> //验证码组件调用 <div class="form-group"> <?= Html::submitButton(‘Signup‘, [‘class‘ => ‘btn btn-primary‘, ‘name‘ => ‘signup-button‘]) ?> </div> <?php ActiveForm::end(); ?> </div> </div></div>?>
时间: 2024-10-14 23:46:53