6 フォロワー

Giiを使ったコード生成

このセクションでは、いくつかの一般的なWebサイト機能を実装するコードを自動生成するためにGiiをどのように使用するかについて説明します。Giiを使用してコードを自動生成するには、Gii Webページに表示される指示に従って正しい情報を入力するだけです。

このチュートリアルでは、次の方法を学びます。

  • アプリケーションでGiiを有効にする、
  • Giiを使用してActive Recordクラスを生成する、
  • Giiを使用してDBテーブルのCRUD操作を実装するコードを生成する、
  • Giiによって生成されたコードをカスタマイズする。

Giiの起動

Giiは、Yiiでモジュールとして提供されています。アプリケーションのmodulesプロパティで設定することでGiiを有効にできます。アプリケーションの作成方法によっては、config/web.php設定ファイルに次のコードがすでに提供されている場合があります。

$config = [ ... ];

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

上記の設定は、開発環境の場合、アプリケーションにgiiという名前のモジュールを含める必要があり、そのクラスはyii\gii\Moduleであることを示しています。

アプリケーションのエントリスクリプトweb/index.phpを確認すると、次の行が見つかります。これにより、基本的にYII_ENV_DEVtrueになります。

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

この行のおかげで、アプリケーションは開発モードになり、上記の設定に従ってGiiがすでに有効になっています。次のURLを使用してGiiにアクセスできるようになりました。

https://hostname/index.php?r=gii

注意: ローカルホスト以外のマシンからGiiにアクセスしている場合、セキュリティ上の理由から、デフォルトでアクセスは拒否されます。許可されたIPアドレスを追加するようにGiiを設定できます。方法は次のとおりです。

'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs
],

Gii

Active Recordクラスの生成

Giiを使用してActive Recordクラスを生成するには、(Giiのインデックスページのリンクをクリックして)「モデルジェネレータ」を選択します。次に、フォームに次のように入力します。

  • テーブル名: country
  • モデルクラス: Country

Model Generator

次に、「プレビュー」ボタンをクリックします。作成される結果のクラスファイルにmodels/Country.phpがリストされていることがわかります。クラスファイルの名前をクリックして、その内容をプレビューできます。

Giiを使用する場合、すでに同じファイルを作成済みで、それを上書きする場合は、ファイル名の横にあるdiffボタンをクリックして、生成されるコードと既存のバージョンとの違いを確認します。

Model Generator Preview

既存のファイルを上書きする場合は、「上書き」の横にあるチェックボックスをオンにしてから、「生成」ボタンをクリックします。新しいファイルを作成する場合は、「生成」をクリックするだけで済みます。

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

CRUDコードの生成

CRUDとは、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の略で、ほとんどのWebサイトでデータに対して行われる4つの一般的なタスクを表します。 Giiを使用してCRUD機能を作成するには、「CRUDジェネレーター」(Giiインデックスページのリンクをクリック)を選択します。「country」の例では、結果として表示されるフォームに次のように入力します。

  • モデルクラス:app\models\Country
  • 検索モデルクラス:app\models\CountrySearch
  • コントローラークラス:app\controllers\CountryController

CRUD Generator

次に、「プレビュー」ボタンをクリックします。以下に示すように、生成されるファイルのリストが表示されます。

CRUD Generator Preview

以前にcontrollers/CountryController.phpファイルとviews/country/index.phpファイル(ガイドのデータベースセクション)を作成した場合は、「上書き」ボックスをオンにしてそれらを置き換えます。(以前のバージョンでは、完全なCRUDサポートはありませんでした。)

試してみる

動作を確認するには、ブラウザを使用して次のURLにアクセスします。

https://hostname/index.php?r=country%2Findex

データベーステーブルの国を表示するデータグリッドが表示されます。グリッドをソートしたり、列ヘッダーにフィルター条件を入力してフィルター処理したりできます。

グリッドに表示される各国について、詳細を表示したり、更新したり、削除したりできます。また、グリッドの上部にある「国を作成」ボタンをクリックすると、新しい国を作成するためのフォームが表示されます。

Data Grid of Countries

Updating a Country

これらの機能がどのように実装されているかを調べたり、カスタマイズしたりする場合のために、Giiによって生成されたファイルのリストを以下に示します。

  • コントローラー:controllers/CountryController.php
  • モデル:models/Country.phpおよびmodels/CountrySearch.php
  • ビュー:views/country/*.php

情報:Giiは、高度にカスタマイズ可能で拡張可能なコード生成ツールとして設計されています。賢明に使用すると、アプリケーション開発のスピードを大幅に向上させることができます。詳細については、Giiセクションを参照してください。

まとめ

このセクションでは、Giiを使用して、データベーステーブルに保存されたコンテンツに対して完全なCRUD機能を実装するコードを生成する方法を学びました。

タイプミスを発見したり、このページを改善する必要があると思われる場合は?
githubで編集 !