Yii 2.0 часть 3. Генерация кода при помощи Gii
Использование модуля Gii для автоматической генерации кода. Yii 2.0. конспект-памятка курса 'Полное руководство по Yii 2.0' с незначительными вариациями. Оригинал на русском языке можно найти здесь.
АЛАРМА!!! Данная памятка являет собой откровенный копипаст! Для ознакомления с первоисточником перейдите по ссылке, указанной выше.
копипастил Капустин Яков
оглавление
01Запуск Gii
Gii представлен в Yii как модуль и предназначен для автоматической генерации кода, реализующего некоторые общие функции вебсайта. Необходимо удостовериться в наличии следующего кода в конфигурационном файле config/web.php:
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$params = require __DIR__ . '/params.php';
$db = require __DIR__ . '/db.php';
$config = [
...
];
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
// uncomment the following to add your IP if you are not connecting from localhost.
//'allowedIPs' => ['127.0.0.1', '::1'],
];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
// uncomment the following to add your IP if you are not connecting from localhost.
//'allowedIPs' => ['127.0.0.1', '::1'],
];
}
return $config;
По умолчанию, в целях обеспечения безопасности, доступ к Gii не с локального хоста запрещён. Константа YII_ENV_DEV устанавливается в значение true во входном скрипте приложения web/index.php, переводя приложение в режим разработки:
2
3
4
5
6
7
...
// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
...
При наличии указанных выше фрагментов кода Gii активирован и доступен по следующему адресу: /index.php?r=gii.
02Генерация класса Active Record
Чтобы использовать Gii для генерации класса Active Record, выбираю 'Генератор модели' (нажав на ссылку на главной странице Gii). Заполняю форму следующим образом:
- Имя таблицы: country;
- Класс модели : Country.
Затем нажимаю на кнопку 'Предварительный просмотр'. Файл models/Country.php перечислен в результатах создаваемых файлов классов. Нажмём на имя файла класса для просмотра его содержимого.
Нажмём на кнопку diff рядом с именем файла, чтобы увидеть различия между генерируемым кодом и существующей версией.
Для перезаписи существующего файла ставлю флажок рядом с 'overwrite' и нажмите кнопку 'Generate'. Для создания нового файла нужно просто нажать 'Generate'.
Смотрю сообщения об ошибках, выставляю 0777 на НЕОБХОДИМЫЕ директории, 'Generate'.
03Генерация CRUD кода
CRUD расшифровывается как Create, Read, Update и Delete, предоставляющий четыре основные функции, выполняемые над данными на большинстве веб-сайтов. Чтобы создать функциональность CRUD используя Gii, необходимо выбрать 'CRUD Генератор', нажав на ссылку на главной странице Gii. Для таблицы «country» заполняю полученную форму следующим образом:
- Model Class: app\models\Country;
- Search Model Class: app\models\CountrySearch;
- Controller Class: app\controllers\CountryController;
- View Path: @app/views/country.
Затем 'Preview',
копирую на всякий перезаписываемые файлы, 0777 и 'overwrite'.
Проверка
Чтобы увидеть, как работает весь вышеприведённый код, перейдите по следующей ссылке в своём браузере: /index.php?r=country%2Findex.
Капустин Яков (2019.01.24 00:18)