Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Генератор кода Gii

Gii — встроенный генератор кода. Он читает структуру таблицы и создаёт по ней класс модели, а также контроллер и шаблоны для списка, просмотра, создания и изменения записей. Такой набор страниц называют CRUD — по первым буквам слов create, read, update, delete.

Где находится Gii

Gii — модуль, подключённый в конце файла config/web.php внутри условия if (YII_ENV_DEV). Он работает только в режиме разработки и только при обращении с того же компьютера. Откройте http://localhost:8080/gii (без красивых адресов — index.php?r=gii). Появится страница со списком генераторов.

ГенераторЧто создаёт
Model GeneratorКласс модели по таблице
CRUD GeneratorКонтроллер и шаблоны управления записями
Controller GeneratorПустой контроллер с действиями
Form GeneratorШаблон формы для модели

Генерация модели

Выберите Model Generator и заполните два поля:

  • Table Name — post;
  • Model Class Name — Post.

Нажмите Preview: Gii покажет файл models/Post.php, который собирается создать. Файл у вас уже есть, поэтому он отмечен как изменяемый — поставьте флажок overwrite и нажмите Generate.

В новой модели появятся три метода: rules() с правилами проверки, выведенными из типов столбцов, attributeLabels() с подписями полей и методы связей, если в таблице есть внешние ключи. Связи и свой код, написанные вручную, при перезаписи пропадут — перенесите их заново.

Генерация CRUD

Выберите CRUD Generator и заполните поля:

  • Model Class — app\models\Post;
  • Search Model Class — app\models\PostSearch;
  • Controller Class — app\controllers\PostController.

После Preview и Generate появятся файлы:

controllers/PostController.php
models/PostSearch.php
views/post/index.php
views/post/view.php
views/post/create.php
views/post/update.php
views/post/_form.php
views/post/_search.php

Откройте /post/index: там таблица статей с сортировкой, поиском по столбцам и кнопками просмотра, изменения и удаления, а над ней — кнопка создания статьи. Весь этот код обычный, его можно читать и менять.

Gii в консоли

Те же генераторы запускаются командой:

php yii gii/model --tableName=post --modelClass=Post

Команда создаст models/Post.php и спросит, перезаписать ли существующий файл.

Как пользоваться результатом

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

Частая ошибка

Флажок overwrite заменяет файл целиком. Если вы уже написали свой PostController и поставили флажок, не глядя, ваш код исчезнет. Перед Generate нажмите кнопку diff рядом с файлом — Gii покажет, что именно изменится.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.