本文为大家分享了yii2.0实现验证用户名与邮箱功能的相关代码,具体内容如下
视图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位数字或字母\'],
[\'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;
}
}
以上就是本文的全部内容,帮助大家实现yii2.0验证功能。
本文地址:https://www.stayed.cn/item/13079
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我