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

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

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

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


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

LAV45 committed
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';
}
```

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

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

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

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

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

![Gii](images/start-gii.png)


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

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

LAV45 committed
54 55
* Имя таблицы: `country`
* Класс модели : `Country`
56

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

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

LAV45 committed
61
При использовании Gii, если вы уже создали такой же файл и хотите перезаписать его, нажмите кнопку `различия` рядом с именем файла, чтобы увидеть различия между генерируемого кода и существующей версии.
62

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

yupe committed
65
Если необходимо перезаписать существующего файла, установите флажок рядом с "переписать", а затем нажмите кнопку "Создать". При создании нового файла, вы можете просто нажать "Создать".
66

LAV45 committed
67
Далее, вы увидите страницу подтверждения, указывающую что код был успешно создана. Если ваш файл уже существующествует, вы также увидите сообщение о том, что он был переписан с вновь сгенерированным кодом.
68 69


LAV45 committed
70
Создание CRUD кода <a name="generating-crud"></a>
71 72
--------------------

LAV45 committed
73
CRUD расшифровывается как Создать, Читать, Обновить, и Удалить, представляющих четыре общие задачи, принятые с данными на большинстве веб-сайтов. Чтобы создать функциональность CRUD используйте Gii, выберите "CRUD Генератор" (нажав на ссылку на главной странице GII). Для «country», например, заполнить полученную форму следующим образом:
74

LAV45 committed
75 76 77
* Класс модели : `app\models\Country`
* Класс модели поиска: `app\models\CountrySearch`
* Класс контроллера: `app\controllers\CountryController`
78

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

LAV45 committed
81
Затем, нажмите на кнопку "Предварительный просмотр". Вы увидите список файлов, которые будут созданы, как показано ниже.
82

LAV45 committed
83
[[ЗДЕСЬ НУЖНА КАРТИНКА]]
84

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


LAV45 committed
88
Пытается его <a name="trying-it-out"></a>
89 90
-------------

LAV45 committed
91
Чтобы увидеть как она работает, используйте ваш браузер для доступа к следующему URL:
92 93 94 95 96

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

yupe committed
97
Вы увидите таблицу данных, показывающую страны из таблицы базы данных. Вы можете сортировать, или фильтр необходимо ввести условия фильтрации в заголовки столбцов.
98

LAV45 committed
99 100
Для каждой страны отображающейся в таблице, вы можете просмотреть подробную информацию, обновить ее или удалить.
Вы также можете нажать на кнопку "Создать страну" в верхней части таблицы и будет предоставлена форма для создания новой страны.
101

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

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

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

LAV45 committed
108 109 110
* Контроллер: `controllers/CountryController.php`
* Модели: `models/Country.php` and `models/CountrySearch.php`
* Вид: `views/country/*.php`
111

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


LAV45 committed
115
Заключение <a name="summary"></a>
116 117
-------

LAV45 committed
118
В этом разделе, Вы узнали как использовать Gii чтобы генерировать код который реализует полный функциональность CRUD для содержимого которое хранится в таблице базы данных.