Реєстрація користувача в Yii2. Частина 1

424

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком 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. Частина 1

Думаю, тут все зрозуміло і особливо пояснювати нічого. На всяк випадок нагадаю. Модель має 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. Частина 1

Суть цього коду також повинна бути зрозуміла. Спочатку ми перевіряємо, чи не є користувач вже авторизованим. Якщо авторизований користувач, т. е. це не гість, тоді ми зробимо редирект на головну сторінку сайту. В цілому, дана перевірка не є насправді обов’язковою, але як мені здається, якщо авторизований користувач, то показувати йому форму реєстрації не обов’язково.

Далі ми отримуємо об’єкт моделі і передаємо його подання signup. Давайте створимо таке подання.

field($model, ‘username’) ?>
field($model, ‘password’)->passwordInput() ?>

‘btn btn-success’]) ?>

Реєстрація користувача в Yii2. Частина 1

Залишилося протестувати написаний код. Давайте звернемося за адресою http://yii2/site/signup і перевіримо наявність форми на сторінці.

Реєстрація користувача в Yii2. Частина 1

Супер! Форма є і помилок немає. На цьому ми поки зупинимося і в наступній статті ми продовжимо працювати з реєстрацією користувачів.

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