このセクションでは、いくつかの一般的なWebサイト機能を実装するコードを自動生成するためにGiiをどのように使用するかについて説明します。Giiを使用してコードを自動生成するには、Gii Webページに表示される指示に従って正しい情報を入力するだけです。
このチュートリアルでは、次の方法を学びます。
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_DEV
がtrue
になります。
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のインデックスページのリンクをクリックして)「モデルジェネレータ」を選択します。次に、フォームに次のように入力します。
country
Country
次に、「プレビュー」ボタンをクリックします。作成される結果のクラスファイルにmodels/Country.php
がリストされていることがわかります。クラスファイルの名前をクリックして、その内容をプレビューできます。
Giiを使用する場合、すでに同じファイルを作成済みで、それを上書きする場合は、ファイル名の横にあるdiff
ボタンをクリックして、生成されるコードと既存のバージョンとの違いを確認します。
既存のファイルを上書きする場合は、「上書き」の横にあるチェックボックスをオンにしてから、「生成」ボタンをクリックします。新しいファイルを作成する場合は、「生成」をクリックするだけで済みます。
次に、コードが正常に生成されたことを示す確認ページが表示されます。既存のファイルがあった場合は、それが新しく生成されたコードで上書きされたことを示すメッセージも表示されます。
CRUDとは、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の略で、ほとんどのWebサイトでデータに対して行われる4つの一般的なタスクを表します。 Giiを使用してCRUD機能を作成するには、「CRUDジェネレーター」(Giiインデックスページのリンクをクリック)を選択します。「country」の例では、結果として表示されるフォームに次のように入力します。
app\models\Country
app\models\CountrySearch
app\controllers\CountryController
次に、「プレビュー」ボタンをクリックします。以下に示すように、生成されるファイルのリストが表示されます。
以前にcontrollers/CountryController.php
ファイルとviews/country/index.php
ファイル(ガイドのデータベースセクション)を作成した場合は、「上書き」ボックスをオンにしてそれらを置き換えます。(以前のバージョンでは、完全なCRUDサポートはありませんでした。)
動作を確認するには、ブラウザを使用して次のURLにアクセスします。
https://hostname/index.php?r=country%2Findex
データベーステーブルの国を表示するデータグリッドが表示されます。グリッドをソートしたり、列ヘッダーにフィルター条件を入力してフィルター処理したりできます。
グリッドに表示される各国について、詳細を表示したり、更新したり、削除したりできます。また、グリッドの上部にある「国を作成」ボタンをクリックすると、新しい国を作成するためのフォームが表示されます。
これらの機能がどのように実装されているかを調べたり、カスタマイズしたりする場合のために、Giiによって生成されたファイルのリストを以下に示します。
controllers/CountryController.php
models/Country.php
およびmodels/CountrySearch.php
views/country/*.php
情報:Giiは、高度にカスタマイズ可能で拡張可能なコード生成ツールとして設計されています。賢明に使用すると、アプリケーション開発のスピードを大幅に向上させることができます。詳細については、Giiセクションを参照してください。
このセクションでは、Giiを使用して、データベーステーブルに保存されたコンテンツに対して完全なCRUD機能を実装するコードを生成する方法を学びました。
タイプミスを発見したり、このページを改善する必要があると思われる場合は?
githubで編集 !
これらの手順では、models\Country.phpを編集して追加する必要があることを説明していません。
以前のGiiの例を実行した場合に、それが機能するように。
DockerコンテナでYiiを実行する場合は、ホストIP(127.0.0.1ではない)を許可する必要があります。最初はあまり明確ではないかもしれません。
詳細はこちら: https://github.com/yiisoft/yii2-app-basic/issues/192
皆さん、こんにちは。CRUDジェネレーターテンプレートvendor/yiisoft/yii2-gii/src/generators/crud/default/views/index.phpの69行目にエラーがあります。
解決策:$modelClassを$generator->modelClassに変更します
Before: 'urlCreator' => function ($action, <?= $modelClass ?> ... After: 'urlCreator' => function ($action, <?= $generator->modelClass ?> ...
@jheym
いいえ、
9行目にあります
したがって、エラーはありません。
コメントするには、サインアップまたはログインしてください。