Регистрация пользователя в Yii2. Часть 1

Регистрация пользователя в Yii2

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы рассмотрим, как осуществляется регистрация пользователя в Yii2.

Для того, чтобы пользователь мог полноценно пользоваться сайтом, желательно предоставить ему личный кабинет и, соответственно, возможность авторизации. Ну а для того, чтобы работала авторизация, само собой, понадобится регистрация пользователя. В этом статье мы с вами начнем реализацию процесса регистрации в Yii.

Для начала нам потребуется таблица в БД. Пусть это будет таблица user. Вот запрос для создания этой таблицы:

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `role` varchar(255) NOT NULL DEFAULT 'user',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

Таблица очень проста и имеет всего четыре поля: id, username, password и role. В поля username и password мы будем записывать имя пользователя и его пароль. Поле role, которое по умолчанию имеет значение user, предназначено для записи роли пользователя, которого мы хотим добавить. Все просто.

Идем дальше. Следующим шагом будет создание модели, которая будет отвечать за форму регистрации. Назовем ее SignupForm:

namespace app\models;
use yii\base\Model;

class SignupForm extends Model{
    
    public $username;
    public $password;
    
    public function rules() {
        return [
            [['username', 'password'], 'required', 'message' => 'Заполните поле'],
        ];
    }
    
    public function attributeLabels() {
        return [
            'username' => 'Логин',
            'password' => 'Пароль',
        ];
    }
    
}

Регистрация пользователя в Yii2

Полагаю, здесь все понятно и особо объяснять нечего. На всякий случай напомню. Модель имеет 2 поля, которые и будут отвечать за соответствующие поля формы регистрации. Метод rules определяет правила валидации. Ну а метод attributeLabels устанавливаете названия полей для тега label формы.

Теперь добавим экшен в нужный нам контроллер. В созданном экшене получим объект модели и напишем еще несколько строк кода. Экшен actionSignup я помещу в контроллер SiteController.

public function actionSignup(){
    if (!Yii::$app->user->isGuest) {
        return $this->goHome();
    }
    $model = new SignupForm();
    
    return $this->render('signup', compact('model'));
}

Регистрация пользователя в Yii2

Суть данного кода также должна быть понятна. Вначале мы проверяем, не является ли пользователь уже авторизованным. Если пользователь авторизован, т.е. это не гость, тогда мы сделаем редирект на главную страницу сайта. В целом, данная проверка не является на самом деле обязательной, но как мне кажется, если пользователь авторизован, то показывать ему форму регистрации не обязательно.

Далее мы получаем объект модели и передаем его в представление signup. Давайте создадим такое представление.

<?php

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
?>

<?php $form = ActiveForm::begin() ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<div class="form-group">
    <div>
        <?= Html::submitButton('Регистрация', ['class' => 'btn btn-success']) ?>
    </div>
</div>
<?php ActiveForm::end() ?>

Регистрация пользователя в Yii2

Осталось протестировать написанный код. Давайте обратимся по адресу http://yii2/site/signup и проверим наличие формы на странице.

Регистрация пользователя в Yii2

Супер! Форма имеется и ошибок нет. На этом мы пока остановимся и в следующей статье продолжим работать с регистрацией пользователей.

Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree