start-gii.md 9.51 KB
Newer Older
RichWeber committed
1
Генерація коду за допомогою Gii
2
===============================
RichWeber committed
3

4 5 6
Цей розділ описує, як використовувати [Gii](tool-gii.md) для автоматичної генерації коду, процедура якої має певні 
спільні риси з веб-сайтом. Використання Gii для автоматичного створення коду є простою процедурою введення 
правильної інформації згідно інструкцій, які містяться на Gii.
RichWeber committed
7 8 9

В даному керівництві ви дізнаєтесь:

10 11
* Увімкнути Gii у вашому додатку
* Використання Gii для генерації класів Active Record
RichWeber committed
12 13 14 15 16
* Використання Gii для генерації коду по операціям CRUD бази даних
* Налаштування коду, що був згенерований Gii


Підготовка Gii <a name="starting-gii"></a>
17
--------------
RichWeber committed
18

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

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

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

32 33
Наведена вище конфігурація підключає модуль `gii` у тому випадку, коли ваш додаток знаходиться в 
[середовищі розробки](concept-configurations.md#environment-constants) і наслідує клас [[yii\gii\Module]].
RichWeber committed
34

35 36
Якщо ви перевірите [вхідний скрипт](structure-entry-scripts.md) `web/index.php` вашого додатку, то знайдете наступний 
рядок `YII_ENV_DEV`, який переводить додаток в середовище розробки.
RichWeber committed
37 38 39 40 41

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

42 43
Завдяки даному рядку, ваш додаток знаходиться в режимі розробки, і буде підключати Gii, із вищевказаною конфігурацією.
Тепер ви можете отримати доступ до Gii за наступною адресою:
RichWeber committed
44 45 46 47 48

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

49 50 51 52 53 54 55 56 57 58 59
> Примітка: Якщо ви звертаєтеся до Gii від машини, крім локальної, доступ буде заборонений за замовчуванням із міркувань
  безпеки. Ви можете налаштувати Gii, додавши дозволені IP адреси, як показано нижче,
>
```php
'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // налаштувати для ваших потреб
],
```

![Gii](images/start-gii.png)
RichWeber committed
60 61 62


Генерація класу Active Record <a name="generating-ar"></a>
63
-----------------------------
RichWeber committed
64

65 66
Використовуючи Gii для генерації класу Active Record, виберіть "Model Generator" (натиснувши на посилання на сторінці Gii).
Далі заповніть форму наступними даними:
RichWeber committed
67 68 69 70

* Ім’я таблиці: `country`
* Клас моделі: `Country`

71
![Генератор моделі](images/start-gii-model.png)
RichWeber committed
72

73 74
Далі, натисніть на кнопку "Перегляду" ("Preview"). Ви побачите файл `models/Country.php`, який буде створено в результаті
даних дій. Ви можете натиснути на ім’я файлу класу для перегляду його вмісту.
RichWeber committed
75

76 77
Якщо при використанні Gii, раніше вже був створений файл моделі, то він буде перезаписаний. Для того, щоб переглянути 
відмінності в коді натисніть на кнопку `diff` поруч з ім’ям файлу.
RichWeber committed
78

79
![Прев’ю генератора моделі](images/start-gii-model-preview.png)
RichWeber committed
80

81 82
При перезаписі існуючого файлу, встановіть прапорець поруч із чекбоксом "перезаписати" ("overwrite"), а потім натисніть 
кнопку "Створити" ("Generate"). При створенні нового файлу, ви можете просто натиснути на кнопку "Створити" ("Generate").
RichWeber committed
83

84 85
Далі, ви побачите сторінку підтвердження із відображенням коду, який був сгенерований. Якщо ви перезаписували вже існуючий 
файл, то побачите повідомлення про те, що він був переписаний і замінений на щойно згенерований код.
RichWeber committed
86 87 88


Генерація коду CRUD <a name="generating-crud"></a>
89
-------------------
RichWeber committed
90

91 92 93
CRUD розшифровується як Створити, Прочитати, Оновити, і Видалити, це операції що вирішують чотири спільні завдання 
з маніпулюванням даними на більшості веб-сайтів. Щоб створити CRUD інтерфейс використовуючи Gii, оберіть 
"CRUD Generator" (натиснувши відповідну кнопку на сторінці Gii). Наприклад, для таблиці "country", заповніть наступні поля форми:
RichWeber committed
94 95 96 97 98

* Клас моделі: `app\models\Country`
* Клас моделі пошуку: `app\models\CountrySearch`
* Клас контролера: `app\controllers\CountryController`

99
![CRUD генератор](images/start-gii-crud.png)
RichWeber committed
100

101 102
Далі, натисніть на кнопку "Перегляду" ("Preview"). Ви побачите файл `models/Country.php` який буде створений в 
результаті даних дій. Ви можете натиснути на ім’я файлу класу для перегляду його вмісту.
RichWeber committed
103

104
![Прев’ю CRUD генератор](images/start-gii-crud-preview.png)
RichWeber committed
105

106 107 108
Якщо ви попередньо створили контролер `controllers/CountryController.php` і файл представлення `views/country/index.php` 
(в розділі "Робота з базами даних" даного посібника), оберіть чекбокс "перезаписати" і замініть їх. 
(Попередні версії файлів на мають повного CRUD функціоналу.)
RichWeber committed
109 110


111 112
Спробуємо <a name="trying-it-out"></a>
---------
RichWeber committed
113 114 115 116 117 118 119

Щоб побачити все, що було створено під час роботи, відкрийте в браузері наступний URL:

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

120 121
Ви побачите таблицю даних, що показує країни з таблиці бази даних. Ви зможете відсортувати сітку, або відфільтрувати 
пошук, вказавши умови фільтрації в заголовках стовпців.
RichWeber committed
122

123 124 125
Для кожної країни, що відображається в таблиці, ви можете використати функції перегляду деталей, оновлення даних, або 
взагалі видалити її. Ви також можете натиснути на кнопку "Створити країну" зверху сітки відображення, яка переадресує 
вас на форму створення нової країни.
RichWeber committed
126

127
![Сітка даних країн](images/start-gii-country-grid.png)
RichWeber committed
128

129
![Оновлення даних країни](images/start-gii-country-update.png)
RichWeber committed
130

131 132
Нижче наведено перелік файлів, згенерованих Gii, у тому разі, якщо ви захочете дослідити, як реалізовані ці можливості, 
або доналаштувати їх під свої потреби:
RichWeber committed
133 134 135 136 137

* Контролер: `controllers/CountryController.php`
* Моделі: `models/Country.php` і `models/CountrySearch.php`
* Представлення: `views/country/*.php`

138 139
> Інформація: Gii це гнучкий і розширюваний інструмент для генерації коду. При правильному використувані, від дозволить 
  вам значно прискорити розробку ваших додатків. Для більш докладної інформації, будьласка, зверніться до розділу [Gii](tool-gii.md).
RichWeber committed
140 141


142 143
Підсумок <a name="summary"></a>
--------
RichWeber committed
144

145 146
В цьому розділі ви дізналися як, використовуючи Gii, генерувати код, який реалізує повну функціональність CRUD для 
маніпулювання даними, що зберігаються в таблицях баз даних.