Генерация кода с помощью Gii
В этом разделе описано, как использовать Gii для автоматической генерации кода, реализующего некоторые распространенные функции веб-сайтов. Использование Gii для автоматической генерации кода сводится к вводу правильной информации в соответствии с инструкциями на страницах Gii.
В этом руководстве вы узнаете, как:
- включить Gii в вашем приложении,
- использовать Gii для генерации класса Active Record,
- использовать Gii для генерации кода, реализующего операции CRUD для таблицы базы данных,
- настроить код, сгенерированный Gii.
Начало работы с Gii
Gii предоставляется в Yii как модуль. Вы можете включить Gii, настроив его в свойстве modules приложения. В зависимости от способа создания вашего приложения, в файле конфигурации config/web.php может быть предоставлен следующий код:
$config = [ ... ];
if (YII_ENV_DEV) {
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
Вышеуказанная настройка указывает, что при работе в среде разработки приложение должно включать модуль с именем gii, который относится к классу yii\gii\Module.
Если вы проверите скрипт входа web/index.php вашего приложения, вы найдете следующую строку, которая по сути делает YII_ENV_DEV true.
defined('YII_ENV') or define('YII_ENV', 'dev');
Благодаря этой строке ваше приложение находится в режиме разработки и уже включило Gii в соответствии с приведенной выше настройкой. Теперь вы можете получить доступ к Gii по следующему URL:
http://hostname/index.php?r=gii
Примечание: Если вы получаете доступ к Gii с машины, отличной от localhost, доступ будет по умолчанию запрещен по соображениям безопасности. Вы можете настроить Gii, чтобы добавить разрешенные IP-адреса следующим образом,
'gii' => [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs ],

Генерация класса Active Record
Для использования Gii для генерации класса Active Record выберите "Генератор моделей" (нажав на ссылку на главной странице Gii). Затем заполните форму следующим образом:
- Имя таблицы:
country - Имя класса модели:
Country

Далее нажмите кнопку "Предпросмотр". Вы увидите, что models/Country.php перечислен в создаваемом файле класса. Вы можете щелкнуть по имени файла класса, чтобы предварительно просмотреть его содержимое.
При использовании Gii, если вы уже создали тот же файл и собираетесь его перезаписать, нажмите кнопку diff рядом с именем файла, чтобы увидеть различия между генерируемым кодом и существующей версией.

При перезаписи существующего файла установите флажок рядом с "перезаписать" и нажмите кнопку "Создать". При создании нового файла просто нажмите "Создать".
Далее вы увидите страницу подтверждения, указывающую, что код был успешно сгенерирован. Если у вас был существующий файл, вы также увидите сообщение, указывающее, что он был перезаписан сгенерированным кодом.
Генерация кода CRUD
CRUD означает Create, Read, Update, Delete, представляя четыре общие задачи, выполняемые с данными на большинстве веб-сайтов. Для создания функциональности CRUD с помощью Gii выберите "Генератор CRUD" (нажав на ссылку на главной странице Gii). Для примера "страны" заполните полученную форму следующим образом:
- Имя класса модели:
app\models\Country - Имя класса модели поиска:
app\models\CountrySearch - Имя класса контроллера:
app\controllers\CountryController

Далее нажмите кнопку "Предпросмотр". Вы увидите список генерируемых файлов, как показано ниже.

Если вы ранее создали файлы controllers/CountryController.php и views/country/index.php (в разделе базы данных руководства), установите флажок "перезаписать", чтобы заменить их. (Предыдущие версии не поддерживали полную функциональность CRUD.)
Проверка работы
Чтобы увидеть, как это работает, используйте свой браузер для доступа к следующему URL:
http://hostname/index.php?r=country%2Findex
Вы увидите таблицу данных, отображающую страны из таблицы базы данных. Вы можете сортировать таблицу или фильтровать ее, введя условия фильтрации в заголовках столбцов.
Для каждой страны, отображенной в таблице, вы можете просмотреть подробную информацию, обновить или удалить ее. Вы также можете нажать на кнопку "Создать страну" в верхней части таблицы, чтобы получить форму для создания новой страны.


Ниже приведен список файлов, сгенерированных Gii, в случае, если вы захотите изучить реализацию этих функций или настроить их:
- Контроллер:
controllers/CountryController.php - Модели:
models/Country.phpиmodels/CountrySearch.php - Представления:
views/country/*.php
Примечание: Gii разработан как гибкий и расширяемый инструмент для генерации кода. Его разумное использование может значительно ускорить разработку приложения. Для получения более подробной информации, обратитесь к разделу Gii.
Заключение
В этом разделе вы узнали, как использовать Gii для генерации кода, реализующего полную функциональность CRUD для содержимого, хранящегося в таблице базы данных.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/guide-start-gii.html