start-gii.md 9.13 KB
Newer Older
LAV45 committed
1
Генерация кода при помощи Gii
2 3
========================

4 5
В этом разделе мы опишем, как использовать [Gii](tool-gii.md) для автоматической генерации кода,
реализующего некоторые общие функции вебсайта. Для достижения этой цели всё, что вам нужно, это просто ввести необходимую информацию в соответствии с инструкциями, отображаемыми на веб-страницах Gii.
6

7
В этом руководстве вы узнаете:
8

9
* Как активировать Gii в приложении;
LAV45 committed
10
* Как использовать Gii для создания Active Record класса;
yupe committed
11
* Как использовать Gii для генерации кода, реализующего CRUD для таблицы БД.
12
* Как настроить код, генерируемый Gii.
13 14


LAV45 committed
15
Запускаем Gii <a name="starting-gii"></a>
16 17
------------

18 19
[Gii](tool-gii.md) предствален в Yii как [модуль](structure-modules.md). Вы можете активировать Gii,
настроив его в свойстве [[yii\base\Application::modules|modules]]. В зависимости от того, каким образом вы создали приложение, вы можете удостовериться в наличии следующего кода в конфигурационном файле `config/web.php`,
20 21 22 23 24 25 26 27 28 29

```php
$config = [ ... ];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yii\gii\Module';
}
```

30
Приведенная выше конфигурация показывает, что находясь в [режиме разработки](concept-configurations.md#environment-constants),
LAV45 committed
31
приложение должно включать в себя модуль с именем `gii`, который реализует класс [[yii\gii\Module]].
32

33 34
Если вы посмотрите [входной скрипт](structure-entry-scripts.md) `web/index.php` вашего приложения, вы
увидите следующую строку, устанавливающую константу `YII_ENV_DEV` в значение `true`.
35 36 37 38 39

```php
defined('YII_ENV') or define('YII_ENV', 'dev');
```

40
Благодаря этой строке ваше приложение находится в режиме разработки, и Gii уже активирован в соответствии с описанной выше конфигурацией. Теперь вы можете получить доступ к Gii по следующему адресу:
41 42 43 44

```
http://hostname/index.php?r=gii
```
45 46
> Замечание: Если вы пытаетесь получить доступ к Gii не с локального хоста, по умолчанию, в целях обеспечения безопасности,
> доступ будет запрещён. Вы можете изменить настройки Gii, чтобы добавить разрешённые IP адреса, как указано ниже
47

48 49 50 51 52 53
```php
'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // регулируйте в соответствии со своими нуждами
],
```
54 55 56
![Gii](images/start-gii.png)


LAV45 committed
57
Генерация класса Active Record <a name="generating-ar"></a>
58 59
---------------------------------

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

LAV45 committed
62 63
* Имя таблицы: `country`
* Класс модели : `Country`
64

LAV45 committed
65
![Генератор модели](images/start-gii-model.png)
66

67
Затем нажмите на кнопку "Предварительный просмотр". Вы увидите, что `models/Country.php` перечислен в результатах создаваемых файлов классов. Вы можете нажать на имя файла класса для просмотра его содержимого.
68

69
Если вы уже создали такой же файл и хотите перезаписать его, нажмите кнопку `diff` рядом с именем файла, чтобы увидеть различия между генерируемым кодом и существующей версией.
70

LAV45 committed
71
![Предварительный просмотр генератора модели](images/start-gii-model-preview.png)
72

73
Для перезаписи существующего файла установите флажок рядом с "overwrite" и нажмите кнопку "Generate". Для создания нового файла вы можете просто нажать "Generate".
74

75
После этого вы увидите страницу подтверждения, указывающую на то, что код был успешно сгенерирован. Если файл существовал до этого, вы также увидите сообщение о том, что он был перезаписан заново сгенерированным кодом.
76 77


LAV45 committed
78
Создание CRUD кода <a name="generating-crud"></a>
79 80
--------------------

81
CRUD расшифровывается как Create, Read, Update и Delete, предоставляющий четыре основные функции, выполняемые над данными на большинстве веб-сайтов. Чтобы создать функциональность CRUD используя Gii, выберите "CRUD Генератор" (нажав на ссылку на главной странице Gii). Для нашей таблицы «country» заполните полученную форму следующим образом:
82

83 84 85
* Model Class: `app\models\Country`
* Search Model Class: `app\models\CountrySearch`
* Controller Class: `app\controllers\CountryController`
86

LAV45 committed
87
![CRUD генератор](images/start-gii-crud.png)
88

89
Затем нажмите на кнопку "Preview". Вы увидите список файлов, которые будут созданы, как показано ниже.
90

91
![CRUD генератор: предпросмотр](images/start-gii-crud-preview.png)
92

93
Если вы уже создали файлы `controllers/CountryController.php` и `views/country/index.php` (в разделе о базах данных), установите флажок "overwrite", чтобы заменить их. (Предыдущие версии не поддерживают CRUD полностью)
94 95


96
Испытываем в действии <a name="trying-it-out"></a>
97 98
-------------

99
Чтобы увидеть как всё это работает, перейдите по следующему URL, используя ваш браузер:
100 101 102 103 104

```
http://hostname/index.php?r=country/index
```

105
Вы увидите таблицу, показывающую страны из таблицы БД. Вы можете сортировать, а также фильтровать данные, указывая условия фильтрации в заголовках столбцов.
106

107 108
Для каждой отображающейся в таблице страны вы можете просмотреть подробную информацию, обновить или удалить её.
Вы также можете нажать на кнопку "Создать страну" в верхней части таблицы для получения формы создания новой страны.
109

LAV45 committed
110
![Таблица данных стран](images/start-gii-country-grid.png)
111

LAV45 committed
112
![Обновление страны](images/start-gii-country-update.png)
113

114
Ниже приведен список файлов, созданных с помощью Gii, в том случае, если вы захотите исследовать реализацию этих функций, или изменить их:
115

LAV45 committed
116
* Контроллер: `controllers/CountryController.php`
117
* Модели: `models/Country.php` и `models/CountrySearch.php`
LAV45 committed
118
* Вид: `views/country/*.php`
119

120
> Информация: Gii разработан как тонконастраиваемый и расширяемый инструмент генерации кода. Используя его с умом, вы можете значительно ускорить скорость разработки приложений. Для более подробной информации, пожалуйста, обратитесь к разделу [Gii](tool-gii.md).
121 122


LAV45 committed
123
Заключение <a name="summary"></a>
124 125
-------

126
В этом разделе вы узнали, как использовать Gii для генерации кода, реализующего полную функциональность CRUD для данных, хранящихся в таблице базы данных.