В этой записи пойдет о том, как пользоваться Gii в Yii2 basic и почему он вам пригодиться.
Эта запись относится к курсу Yii2 basic.
Gii — это генератор кода, который поможет убрать рутинные этапы при разработке проекта.
Например, когда вы создаете контролер для какой-либо модели, вы можете сделать это через Gii. Эта опция называется CRUD.
CRUD — это аббревиатура для Create (создание), Read (Чтение), Update (изменение) и Delete (удаление).
Список возможностей
- Создание моделей (как класс
Car
) - Создание CRUD (как
CarController
) - Создание контроллеров
- Создание форм
- Создание модулей
- Создание расширений
Из вышеперечисленного, в этом проекте, я использовал только создание моделей и CRUD контроллера
CarController
и классаCar
соответственно. Специально для вас, я перевел все на русский язык и показал как можно изменить изначальный контроллер, который я создал без использования этого инструмента на тот вариант который предлагает Gii и почему.
Где найти Gii?
Зайдите на http://yii.loc/gii
и у вас должно открываться следующая страничка:
Создадим тестовый CRUD
На примере CarController
покажу как создать такой CRUD.
Создаем таблицу в базе
Создайте тестовую таблицу через phpMyAdmin, которая будет называться test_user
со следующими полями:title
, first_name
, last_name
, updated_at
и created_at
.
Где
title
— это «мистер» или «миссис»,first_name
— это имя,last_name
— это фамилия иupdated_at
— дата последнего обновления данных иcreated_at
— когда пользователь был создан.
Зайдите в phpMyAdmin, откройте базу данных yii_loc
, нажмите на вкладку SQL, вставьте в поле SQL который представлен ниже, чтобы создать таблицу test_user
:
CREATE TABLE IF NOT EXISTS `test_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `first_name` varchar(255) NOT NULL, `last_name` varchar(255) NOT NULL, `updated_at` int(11) NOT NULL, `created_at` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Так же вам нужно написать следующую команду, чтобы разрешить Apache вносить изменения в папках, которые мы будем использовать:
$ cd /var/www/yii-dev/ & mkdir views/test-user $ sudo chown -R www-data:www-data models/ views/* controllers/
Мы создали папку test-user для шаблонов будущего CRUD, поменяли права на доступ у папок
models/
,views/
иcontrollers/
наwww-data
— это Apache, чтобы у Gii был доступ к созданию новых файлов. После того как мы сделаем CRUD, мы вернем права на вашего root пользователя.
Создаем модель
Теперь нам нужно зайти в Gii, нажать на вкладку «Model Generator», чтобы создать новую модель, по типу как Car
.
- В поле «Table Name» введите «test» и он вам должен предложить «test_user», выберите предложенный вариант.
- В поле «Model Class» должно уже ввестись «TestUser». Это название появилось исходя из названия таблицы (он заранее знает какие таблицы есть в подключенной базе). Вы можете написать свое, но ради этого примера оставьте все как есть.
- Остальное оставьте как есть, кроме «Generate Labels from DB Comments», тут нужно поставить галочку, чтобы перед названием класса были комментарии по поводу колонок, их тип в виде комментария. Это помогает IDE, по типу PhpStrom, понимать какие параметры есть у класса.
- Нажмите на кнопку «Preview», рядом у вас должна появиться кнопка «Generate», нажимаете на неё и в папке
models/
у вас должен появиться новый файлTestUser.php
. Проверьте и продолжаем.
Если все окей, то у вас должно отобразиться следующее сообщение:
Generating code using template "/var/www/yii-dev/vendor/yiisoft/yii2-gii/generators/model/default"... generated models/TestUser.php done!
Создаем CRUD используя TestUser класс
- Далее нажимаем вкладку «CRUD Generator»
- В поле «Model Class» вводим «app\models\TestUser» (модель, которую мы создали в «Model Generator»)
- В поле «Search Model Class» вводим «app\models\search\TestUserSearch» (класс для поиска пользователей)
- В поле «Controller Class» вводим «app\controllers\TestUserController» (название контроллера)
- В поле «View Path» вводим «@app/views/test-user»
- И ставим галочку на «Enable Pjax»
- Нажимаем на «Preview», если ошибок нет, должна появиться кнопка «Generate», нажимаете на неё и если все окей — у вас должно появиться зеленое сообщение. Если нет, то красное.
Если у вас красное, то пишите текст этой ошибки к этому посту, я постараюсь вам помочь.
При успехе, у вас должен вывестись следующий список файлов:
Generating code using template "/var/www/yii-dev/vendor/yiisoft/yii2-gii/generators/crud/default"... generated controllers/TestUserController.php generated models/search/TestUserSearch.php generated views/test-user/_form.php generated views/test-user/_search.php generated views/test-user/create.php generated views/test-user/index.php generated views/test-user/update.php generated views/test-user/view.php done!
Зайдите в папку views/test-user
и проверьте файлы шаблона, так же зайдите в controllers/
и проверьте контроллер, зайдите в models/search
и проверьте класс для поиска данных.
Теперь зайдите на http://yii.loc/test-user
, вы должны увидеть таблицу похожую на то, что мы сделали для машин.
В этом и заключается удобство Gii, вам не нужно делать одно и тоже кучу раз. Теперь вы можете самостоятельно зайти в файлы, которые создал Gii и посмотреть объем кода, который вам пришлось бы писать вручную.
Почистим, что добавили
Если вы хотите удалить все данные, которые вы только что создали, то напишите следующую команды:
$ cd /var/www/yii-dev/ $ sudo rm -rf models/search/TestUserSearch.php models/TestUser.php controllers/TestUserController.php views/test-user
Вернем права на папки обратно:
Напишите команду who
в консоли, чтобы узнать текущего пользователя. В ответ вы должны получить что-то похожее на это:
alex tty8 2017-08-21 11:53 (:0) alex pts/7 2017-08-26 11:02 (:0) alex pts/8 2017-08-26 19:17 (:0)
Первая колонка, где написано alex
и есть логин, который вам нужен. У вас он может конечно же различаться. Его мы будем использовать в команде ниже:
$ sudo chown -R ваш_логин:ваш_логин models/ views/* controllers/
Замените «ваш_логин» на свой логин из who
.
Читать далее — Yii2 basic: Пишем и запускаем тесты с Codeception