namespace app\models;
use Yii;
use yii\db\ActiveRecord;
class Users extends ActiveRecord
{
/**
* Подключаем таблицу БД
*/
public static function tableName()
{
return 'users';
}
/**
* Создаем правила для валидации
*/
public function rules()
{
return [
[['username', 'email', 'password'], 'required'],
[['username', 'email', 'password'], 'filter', 'filter' => 'trim'],
['email', 'email'],
['username', 'string', 'min' => 6, 'max' => 30],
['password', 'required', 'on' => 'create'],
];
}
/**
* Имена атрибутов в форме
*/
public function attributeLabels()
{
return [
'username' => 'Имя',
'email' => 'E-mail',
'password' => 'Пароль',
];
}
}
<?php
namespace app\models;
use yii\base\Model;
use Yii;
class RegForm extends Model
{
public $username;
public $email;
public $password;
public function rules()
{
return [
[['username', 'email', 'password'], 'filter', 'filter' => 'trim'],
[['username', 'email', 'password'], 'required', 'message' => 'заполните все поля'],
['username', 'unique', 'targetClass' => Users::className(), 'message' => 'Это имя занято'],
['email', 'unique', 'targetClass' => Users::className(), 'message' => 'Эта почта уже зарегистрирована']
];
}
public function attributeLabels()
{
return [
'username' => 'Логин',
'email' => 'E_mail',
'password' => 'Пароль'
];
}
namespace app\controllers;
use app\models\LoginForm;
use app\models\RegForm;
use app\models\Users;
use yii\web\Controller;
use yii;
class MainController extends Controller
{
/**
* Регистрация пользователей
*
* $model = new RegForm(); - Создаем объект класса модели
*
* ($model->load(\Yii::$app->request->post()) && $model->validate())
* Проверка на валидность
*
* $user = new Users(); - Создаем объект класса модели
*/
public function actionReg()
{
if (!Yii::$app->user->isGuest)
{
return $this->goHome();
}
$model = new RegForm();
if($model->load(\Yii::$app->request->post()) && $model->validate())
{
$user = new Users();
$user->username = $model->username;
$user->email = $model->email;
$user->password = \Yii::$app->security->generatePasswordHash($model->password);
$user->save();
if($user->save())
{
return $this->goHome();
}
}
return $this->render('reg', ['model' => $model]);
}
public function actionLogin()
{
$model = new LoginForm();
if($model->load(yii::$app->request->post()) && $model->login())
{
return $this->goBack();
}
return $this->render('login', ['model' => $model]);
}
}
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model app\models\RegForm */
/* @var $form ActiveForm */
$this->title = 'Регистрация';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="main-reg">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<div class="form-group">
<?= Html::submitButton('Зарегистрироваться', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>