Yii2 basic, главная страница Gii

Yii2 basic: Gii-помощник

· Yii2 basic · 4 мин чтения

В этой записи пойдет о том, как пользоваться 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 и у вас должно открываться следующая страничка:

Yii2 basic, главная страница 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», нажимаете на неё и если все окей — у вас должно появиться зеленое сообщение. Если нет, то красное.

Если у вас красное, то пишите текст этой ошибки к этому посту, я постараюсь вам помочь.

При успехе, у вас должен вывестись следующий список файлов:

  • Yii2 basic, создаем CRUD Нажимаете «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