yii2.0實現(xiàn)驗證用戶名與郵箱功能
更新時間:2015年12月22日 10:23:22 投稿:lijiao
這篇文章主要介紹了yii2.0實現(xiàn)驗證用戶名與郵箱功能的相關(guān)資料,需要的朋友可以參考下
本文為大家分享了yii2.0實現(xiàn)驗證用戶名與郵箱功能的相關(guān)代碼,具體內(nèi)容如下
視圖signup.php代碼:
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \frontend\models\SignupForm */
$this->title = '注冊';
$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',
'enableAjaxValidation' => true,
'enableClientValidation' => true,
]); ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= $form->field($model, 'password_compare')->passwordInput() ?>
<div class="form-group">
<?= Html::submitButton('Signup', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
控制器SiteController.php
public function actionSignup()
{
$model = new SignupForm();
$model->load($_POST);
if (Yii::$app->request->isAjax) {
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return \yii\bootstrap\ActiveForm::validate($model);
}
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,
]);
}
模型SignupForm.php
use common\models\User;
use yii\base\Model;
use Yii;
/**
* Signup form
*/
class SignupForm extends Model
{
public $username;
public $email;
public $password;
public $password_compare;
/**
* @inheritdoc
*/
public function rules()
{
return [
['username', 'filter', 'filter' => 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => '用戶名已存在.'],
['username', 'string', 'min' => 2, 'max' => 255],
['email', 'filter', 'filter' => 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => '\common\models\User', 'message' => '郵箱名已存在.'],
[['password', 'password_compare'], 'required'],
[['password', 'password_compare'], 'string', 'min' => 6, 'max' => 16, 'message' => '{attribute}是6-16位數(shù)字或字母'],
['password_compare', 'compare', 'compareAttribute' => 'password', 'message' => '兩次密碼不一致'],
];
}
/**
* 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;
}
}
以上就是本文的全部內(nèi)容,幫助大家實現(xiàn)yii2.0驗證功能。
您可能感興趣的文章:
相關(guān)文章
如何通過View::first使用Laravel Blade的動態(tài)模板詳解
這篇文章主要給大家介紹了關(guān)于如何通過View::first使用Laravel Blade的動態(tài)模板的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用php具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧。2017-09-09
php編寫的簡單頁面跳轉(zhuǎn)功能實現(xiàn)代碼
這篇文章主要介紹了php編寫的簡單頁面跳轉(zhuǎn)功能實現(xiàn)代碼,有需要的朋友可以參考一下2013-11-11
yii2使用GridView實現(xiàn)數(shù)據(jù)全選及批量刪除按鈕示例
本篇文章主要介紹了yii2使用GridView實現(xiàn)數(shù)據(jù)全選及批量刪除按鈕示例,具有一定的參考價值,有興趣的可以了解一下。2017-03-03

