start-gii.md 7.84 KB
Newer Older
1 2 3
Gii でコードを生成する
======================

4 5
この節では、[Gii](tool-gii.md) を使って、ウェブサイトの一般的な機能のいくつかを実装するコードを自動的に生成する方法を説明します。
Gii を使ってコードを自動生成することは、Gii のウェブページに表示される指示に対して正しい情報を入力するだけのことです。
6

7
このチュートリアルを通じて、次のことを学びます。
8

9 10 11 12
* アプリケーションで Gii を有効にする方法
* Gii を使って、アクティブレコードのクラスを生成する方法
* Gii を使って、DB テーブルの CRUD 操作を実装するコードを生成する方法
* Gii によって生成されるコードをカスタマイズする方法
13 14


15
Gii を開始する <span id="starting-gii"></span>
16 17
--------------

18
[Gii](tool-gii.md) は Yii の [モジュール](structure-modules.md) として提供されています。
19
Gii は、アプリケーションの [[yii\base\Application::modules|modules]] プロパティの中で構成することで有効にすることが出来ます。
20
アプリケーションを生成した仕方にもよりますが、`config/web.php` の構成情報ファイルの中に、多分、下記のコードが既に提供されているでしょう。
21 22 23 24 25 26 27 28 29 30

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

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

31
上記の構成情報は、[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは `gii` という名前のモジュールをインクルードすべきこと、そして `gii`[[yii\gii\Module]] というクラスであることを記述しています。
32 33 34 35 36 37 38 39

アプリケーションの [エントリスクリプト](structure-entry-scripts.md) である `web/index.php` をチェックすると、次の行があることに気付くでしょう。
これは本質的には `YII_ENV_DEV` を true に設定するものです。

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

40 41
この行のおかげで、アプリケーションは開発モードになっており、上記の構成情報によって、Gii が既に有効になっています。
これで、下記の URL によって Gii にアクセスすることが出来ます。
42 43 44 45 46

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

47 48
> Note|注意: ローカルホスト以外のマシンから Gii にアクセスしようとすると、既定ではセキュリティ上の理由でアクセスが拒否されます。
> 下記のように Gii を構成して、許可される IP アドレスを追加することが出来ます。
49 50 51 52 53 54 55 56 57 58 59
>
```php
'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // 必要に応じて調整
],
```

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


60
アクティブレコードのクラスを生成する <span id="generating-ar"></span>
61 62
------------------------------------

63 64
Gii を使ってアクティブレコードのクラスを生成するためには、"Model Generator" を選びます
(Gii のインデックスページのリンクをクリックして下さい)。
65
そして、次のようにフォームに入力します。
66 67 68 69 70 71 72 73

* Table Name: `country`
* Model Class: `Country`

![Model Generator](images/start-gii-model.png)

次に、"Preview" ボタンをクリックします。
そうすると、結果として作成されるクラスファイルのリストに `models/Country.php` が挙ってきます。
74
クラスファイルの名前をクリックすると、内容をプレビューすることが出来ます。
75

76
Gii を使うときに、既に同じファイルを作成していて、それを上書きしようとしている場合は、ファイル名の隣の `diff` ボタンをクリックして、生成されようとしているコードと既存のバージョンの違いを見てください。
77 78 79

![Model Generator のプレビュー](images/start-gii-model-preview.png)

80 81
既存のファイルを上書きするときは、"overwrite" の隣のチェックボックスをチェックしてから "Generate" ボタンをクリックします。
新しいファイルを作成するときは、単に "Generate" をクリックすれば十分です。
82

83 84
次に、コードの生成が成功したことを示す確認ページが表示されます。
既存のファイルがあった場合は、それが新しく生成されたコードで上書きされたことを示すメッセージも同じく表示されます。
85 86


87
CRUD コードを生成する <span id="generating-crud"></span>
88 89
---------------------

90
CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、ほとんどのウェブサイトでデータを扱うときによく用いられる4つのタスクを表しています。
91 92
Gii を使って CRUD 機能を作成するためには、"CRUD Generator" を選びます (Gii のインデックスページのリンクをクリックしてください) 。
「国リスト」のサンプルのためには、表示されたフォームに以下のように入力します。
93 94 95 96 97 98 99 100 101 102 103 104

* Model Class: `app\models\Country`
* Search Model Class: `app\models\CountrySearch`
* Controller Class: `app\controllers\CountryController`

![CRUD Generator](images/start-gii-crud.png)

次に、"Preview" ボタンをクリックします。
生成されるファイルのリストは、次のようになります。

![CRUD Generator のプレビュー](images/start-gii-crud-preview.png)

105 106
以前に(ガイドのデータベースの節で)`controllers/CountryController.php``views/country/index.php` のファイルを作成していた場合は、それらを置き換えるために "overwrite" のチェックボックスをチェックしてください。
(以前のバージョンは フル機能の CRUD をサポートしていません。)
107 108


109
試してみる <span id="trying-it-out"></span>
110 111
----------

112
どのように動作するかを見るために、ブラウザを使って下記の URL にアクセスしてください。
113 114 115 116 117 118

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

データグリッドがデータベーステーブルから取得した国を表示しているページが表示されます。
119
グリッドをソートしたり、カラムのヘッダに検索条件を入力してグリッドにフィルタを適用したりすることが出来ます。
120

121 122
グリッドに表示されているそれぞれの国について、詳細を見たり、更新したり、または削除したりすることが出来ます。
また、グリッドの上にある "Create Country" ボタンをクリックすると、新しい国データを作成するためのフォームが利用に供されます。
123 124 125 126 127 128

![国リストのデータグリッド](images/start-gii-country-grid.png)

![国データを更新する](images/start-gii-country-update.png)

下記が Gii によって生成されるファイルのリストです。
129
これらの機能がどのように実装されているかを調査したい場合、また、これらの機能をカスタマイズしたいときに参照してください。
130 131

* Controller: `controllers/CountryController.php`
132
* Models: `models/Country.php``models/CountrySearch.php`
133 134 135 136
* Views: `views/country/*.php`

> Info|情報: Gii は非常にカスタマイズしやすく拡張しやすいコード生成ツールとして設計されています。
  これを賢く使うと、アプリケーションの開発速度を大いに高めることが出来ます。
137
  詳細については、[Gii](tool-gii.md) の節を参照してください。
138 139


140
まとめ <span id="summary"></span>
141 142
------

143
この節では、Gii を使ってコードを生成して、データベーステーブルに保存されているコンテントのための完全な CRUD 機能を実装する方法を学びました。