Commit 75914f82 by Nobuo Kihara

docs/guide-ja/start-gii.md - revised [ci skip]

parent a081ae5e
Gii でコードを生成する Gii でコードを生成する
====================== ======================
この節では、[Gii](tool-gii.md) を使って、ウェブサイトの一般的な機能のいくつかを実装するコードを この節では、[Gii](tool-gii.md) を使って、ウェブサイトの一般的な機能のいくつかを実装するコードを自動的に生成する方法を説明します。
自動的に生成する方法を説明します。Gii を使ってコードを自動生成することは、Gii のウェブページに Gii を使ってコードを自動生成することは、Gii のウェブページに表示される指示に対して正しい情報を入力するだけのことです。
表示される指示に対して正しい情報を入力するだけのことです。
このチュートリアルを通じて、次のことをする方法を学びます: このチュートリアルを通じて、次のことを学びます。
* アプリケーションで Gii を有効にする * アプリケーションで Gii を有効にする方法
* Gii を使って、アクティブレコードのクラスを生成する * Gii を使って、アクティブレコードのクラスを生成する方法
* Gii を使って、DB テーブルの CRUD 操作を実装するコードを生成する * Gii を使って、DB テーブルの CRUD 操作を実装するコードを生成する方法
* Gii によって生成されるコードをカスタマイズする * Gii によって生成されるコードをカスタマイズする方法
Gii を開始する<a name="starting-gii"></a> Gii を開始する<a name="starting-gii"></a>
-------------- --------------
[Gii](tool-gii.md) は Yii の [モジュール](structure-modules.md) として提供されます。 [Gii](tool-gii.md) は Yii の [モジュール](structure-modules.md) として提供されています。
Gii は、アプリケーションの [[yii\base\Application::modules|modules]] プロパティの中で構成することで有効にすることが出来ます。 Gii は、アプリケーションの [[yii\base\Application::modules|modules]] プロパティの中で構成することで有効にすることが出来ます。
アプリケーションを生成した仕方にもよりますが、`config/web.php` のコンフィギュレーションファイルの中に、多分、下記のコードが既に提供されているでしょう: アプリケーションを生成した仕方にもよりますが、`config/web.php` の構成情報ファイルの中に、多分、下記のコードが既に提供されているでしょう。
```php ```php
$config = [ ... ]; $config = [ ... ];
...@@ -29,8 +28,8 @@ if (YII_ENV_DEV) { ...@@ -29,8 +28,8 @@ if (YII_ENV_DEV) {
} }
``` ```
上記のコンフィギュレーションは、[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは 上記の構成情報は[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは
`gii` という名前のモジュールをインクルードすべきこと、そして `gii`[[yii\gii\Module]] というクラスのものであることを記述しています。 `gii` という名前のモジュールをインクルードすべきこと、そして `gii`[[yii\gii\Module]] というクラスであることを記述しています。
アプリケーションの [エントリスクリプト](structure-entry-scripts.md) である `web/index.php` をチェックすると、次の行があることに気付くでしょう。 アプリケーションの [エントリスクリプト](structure-entry-scripts.md) である `web/index.php` をチェックすると、次の行があることに気付くでしょう。
これは本質的には `YII_ENV_DEV` を true に設定するものです。 これは本質的には `YII_ENV_DEV` を true に設定するものです。
...@@ -39,15 +38,15 @@ if (YII_ENV_DEV) { ...@@ -39,15 +38,15 @@ if (YII_ENV_DEV) {
defined('YII_ENV') or define('YII_ENV', 'dev'); defined('YII_ENV') or define('YII_ENV', 'dev');
``` ```
この行のおかげで、アプリケーションは開発モードになり、上記のコンフィギュレーションによって、Gii が有効になります。 この行のおかげで、アプリケーションは開発モードになっており、上記の構成情報によって、Gii が既に有効になっています。
これで、下記の URL によって Gii にアクセスすることが出来ます: これで、下記の URL によって Gii にアクセスすることが出来ます。
``` ```
http://hostname/index.php?r=gii http://hostname/index.php?r=gii
``` ```
> Note|注意: ローカルホスト以外のマシンから Gii にアクセスしようとすると、既定ではセキュリティ上の > Note|注意: ローカルホスト以外のマシンから Gii にアクセスしようとすると、既定ではセキュリティ上の理由でアクセスが拒否されます。
> 目的からアクセスが拒否されます。下記のように Gii を構成して、許可される IP アドレスを追加することが出来ます。 > 記のように Gii を構成して、許可される IP アドレスを追加することが出来ます。
> >
```php ```php
'gii' => [ 'gii' => [
...@@ -63,7 +62,7 @@ http://hostname/index.php?r=gii ...@@ -63,7 +62,7 @@ http://hostname/index.php?r=gii
------------------------------------ ------------------------------------
Gii を使ってアクティブレコードのクラスを生成するためには、(Gii のインデックスページのリンクをクリックして) "Model Generator" を選びます。 Gii を使ってアクティブレコードのクラスを生成するためには、(Gii のインデックスページのリンクをクリックして) "Model Generator" を選びます。
そして、次のようにフォームに入力します: そして、次のようにフォームに入力します。
* Table Name: `country` * Table Name: `country`
* Model Class: `Country` * Model Class: `Country`
...@@ -74,26 +73,24 @@ Gii 繧剃スソ縺」縺ヲ繧「繧ッ繝ぅ繝悶Ξ繧ウ繝シ繝峨繧ッ繝ゥ繧ケ繧堤函謌舌☆繧九◆繧√↓ ...@@ -74,26 +73,24 @@ Gii 繧剃スソ縺」縺ヲ繧「繧ッ繝ぅ繝悶Ξ繧ウ繝シ繝峨繧ッ繝ゥ繧ケ繧堤函謌舌☆繧九◆繧√↓
そうすると、結果として作成されるクラスファイルのリストに `models/Country.php` が挙ってきます。 そうすると、結果として作成されるクラスファイルのリストに `models/Country.php` が挙ってきます。
クラスファイルの名前をクリックすると、内容をプレビュー出来ます。 クラスファイルの名前をクリックすると、内容をプレビュー出来ます。
Gii を使うときに、既に同じファイルを作成していて、それを上書きしようとしている場合は、 Gii を使うときに、既に同じファイルを作成していて、それを上書きしようとしている場合は、ファイル名の隣の `diff`
ファイル名の隣の `diff` ボタンをクリックして、生成されようとしているコードと既存のバージョンの ボタンをクリックして、生成されようとしているコードと既存のバージョンの違いを見てください。
違いを見てください。
![Model Generator のプレビュー](images/start-gii-model-preview.png) ![Model Generator のプレビュー](images/start-gii-model-preview.png)
既存のファイルを上書きしようとしているときは、"overwrite" の隣のチェックボックスをチェックしてから "Generate" ボタンをクリックします。 既存のファイルを上書きしようとしているときは、"overwrite" の隣のチェックボックスをチェックしてから "Generate" ボタンをクリックします。
新しいファイルを作成しようとしているときは、単に "Generate" を押せば大丈夫です。 新しいファイルを作成しようとしているときは、単に "Generate" を押せば大丈夫です。
次に、コードの生成が成功したことを示す確認ページが表示されます。既存のファイルがあった場合は、 次に、コードの生成が成功したことを示す確認ページが表示されます。
それが新しく生成されたコードで上書きされたことを示すメッセージも同じく表示されます。 既存のファイルがあった場合は、それが新しく生成されたコードで上書きされたことを示すメッセージも同じく表示されます。
CRUD コードを生成する<a name="generating-crud"></a> CRUD コードを生成する<a name="generating-crud"></a>
--------------------- ---------------------
CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、 CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、ほとんどのウェブサイトでデータを扱うときによく用いられる4つのタスクを表しています。
ほとんどのウェブサイトでデータを扱うときによく用いられる4つのタスクを表しています。
Gii を使って CRUD 機能を作成するためには、(Gii のインデックスページのリンクをクリックして) "CRUD Generator" を選びます。 Gii を使って CRUD 機能を作成するためには、(Gii のインデックスページのリンクをクリックして) "CRUD Generator" を選びます。
「国リスト」のサンプルのためには、以下のようにフォームに入力します: 「国リスト」のサンプルのためには、以下のようにフォームに入力します。
* Model Class: `app\models\Country` * Model Class: `app\models\Country`
* Search Model Class: `app\models\CountrySearch` * Search Model Class: `app\models\CountrySearch`
...@@ -106,31 +103,31 @@ Gii 繧剃スソ縺」縺ヲ CRUD 讖溯繧剃ス懈縺吶k縺溘a縺ォ縺ッ縲(Gii 縺ョ繧、繝ウ繝ャ繧 ...@@ -106,31 +103,31 @@ Gii 繧剃スソ縺」縺ヲ CRUD 讖溯繧剃ス懈縺吶k縺溘a縺ォ縺ッ縲(Gii 縺ョ繧、繝ウ繝ャ繧
![CRUD Generator のプレビュー](images/start-gii-crud-preview.png) ![CRUD Generator のプレビュー](images/start-gii-crud-preview.png)
以前に(ガイドのデータベースの節で)`controllers/CountryController.php` 以前に(ガイドのデータベースの節で)`controllers/CountryController.php``views/country/index.php` のファイルを作成していた場合は、それらを置き換えるために
`views/country/index.php` のファイルを作成していた場合は、それらを置き換えるために "overwrite" の "overwrite" のチェックボックスをチェックしてください。(以前のバージョンは フル機能の CRUD をサポートしていません。)
チェックボックスをチェックしてください。(以前のバージョンは フル機能の CRUD をサポートしていません。)
試してみる<a name="trying-it-out"></a> 試してみる<a name="trying-it-out"></a>
---------- ----------
どのように動作するかを見るために、ブラウザを使って下記の URL にアクセスしてください: どのように動作するかを見るために、ブラウザを使って下記の URL にアクセスしてください。
``` ```
http://hostname/index.php?r=country/index http://hostname/index.php?r=country/index
``` ```
データグリッドがデータベーステーブルから取得した国を表示しているページが表示されます。 データグリッドがデータベーステーブルから取得した国を表示しているページが表示されます。
グリッドをソートしたり、カラムのヘッダに検索条件を入力してグリッドをフィルターしたりすることが出来ます。 グリッドをソートしたり、カラムのヘッダに検索条件を入力してグリッドにフィルタを適用したりすることが出来ます。
グリッドに表示されているそれぞれの国について、詳細を見たり、更新したり、または削除したりすることが出来ます。また、グリッドの上にある "Create Country" ボタンをクリックすると、新しい国データを作成するためのフォームが利用に供されます。 グリッドに表示されているそれぞれの国について、詳細を見たり、更新したり、または削除したりすることが出来ます。
また、グリッドの上にある "Create Country" ボタンをクリックすると、新しい国データを作成するためのフォームが利用に供されます。
![国リストのデータグリッド](images/start-gii-country-grid.png) ![国リストのデータグリッド](images/start-gii-country-grid.png)
![国データを更新する](images/start-gii-country-update.png) ![国データを更新する](images/start-gii-country-update.png)
下記が Gii によって生成されるファイルのリストです。 下記が Gii によって生成されるファイルのリストです。
これらの機能がどのように実装されているかを調査したい場合、また、これらの機能をカスタマイズしたいときに参照してください: これらの機能がどのように実装されているかを調査したい場合、また、これらの機能をカスタマイズしたいときに参照してください。
* Controller: `controllers/CountryController.php` * Controller: `controllers/CountryController.php`
* Models: `models/Country.php` and `models/CountrySearch.php` * Models: `models/Country.php` and `models/CountrySearch.php`
...@@ -138,7 +135,7 @@ http://hostname/index.php?r=country/index ...@@ -138,7 +135,7 @@ http://hostname/index.php?r=country/index
> Info|情報: Gii は非常にカスタマイズしやすく拡張しやすいコード生成ツールとして設計されています。 > Info|情報: Gii は非常にカスタマイズしやすく拡張しやすいコード生成ツールとして設計されています。
これを賢く使うと、アプリケーションの開発速度を大いに高めることが出来ます。 これを賢く使うと、アプリケーションの開発速度を大いに高めることが出来ます。
更なる詳細は、[Gii](tool-gii.md) の節を参照してください。 詳細については、[Gii](tool-gii.md) の節を参照してください。
まとめ<a name="summary"></a> まとめ<a name="summary"></a>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment