Генератор кода 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 покажет, что именно изменится.