Commit 8fb4ce5d by Alexander Makarov

Merge pull request #6294 from softark/docs-guide-ja-start-revised

Docs guide ja start revised [ci skip]
parents 9e42285f cdf2ec15
......@@ -2,15 +2,14 @@
==================
この節では、`country` という名前のデータベーステーブルから読み出した国データを表示する新しいページの作り方を説明します。
この目的を達するために、データベース接続を構成し、[アクティブレコード](db-active-record.md) クラスを作成し、
[アクション](structure-controllers.md) を定義し、そして [ビュー](structure-views.md) を作成します。
この目的を達するために、データベース接続を構成し、[アクティブレコード](db-active-record.md) クラスを作成し、[アクション](structure-controllers.md) を定義し、そして [ビュー](structure-views.md) を作成します。
このチュートリアルを通じて、次のことをする方法を学びます:
このチュートリアルを通じて、次のことを学びます。
* DB 接続を構成する
* アクティブレコードのクラスを定義する
* アクティブレコードのクラスを使ってデータを検索する
* 改ページを伴う方法でビューにデータを表示する
* DB 接続を構成する方法
* アクティブレコードのクラスを定義する方法
* アクティブレコードのクラスを使ってデータを検索する方法
* 改ページを伴う仕方でビューにデータを表示する方法
この節を完了するためには、データベースを使うことについて基本的な知識と経験が無ければならないことに注意してください。
具体的に言えば、DB クライアントツールを用いてデータベースを作成する方法と、SQL 文を実行する方法を知っていなければなりません。
......@@ -21,12 +20,11 @@
まず初めに、`yii2basic` という名前のデータベースを作成してください。このデータベースからアプリケーションにデータを読み出すことになります。
作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選んでください。
Yii は多数のデータベース製品に対するサポートを組み込みで持っています。
Yii は多数のデータベース製品に対するサポートを内蔵していますので、作成するデータベースは、SQLite、MySQL、PosttreSQL、MSSQL または Oracle から選ぶことが出来ます。
以下の説明では、話を単純にするために、MySQL を前提とします。
次に、データベースに `country` という名前のテーブルを作り、いくつかのサンプルデータを挿入します。
そうするために、次の SQL 文を実行することが出来ます:
そうするためには、次の SQL 文を実行することが出来ます。
```sql
CREATE TABLE `country` (
......@@ -47,8 +45,7 @@ INSERT INTO `country` VALUES ('RU','Russia',146934000);
INSERT INTO `country` VALUES ('US','United States',278357000);
```
この時点で、あなたは `yii2basic` という名前のデータベースを持ち、その中に三つのカラムを持つ `country` というテーブルを持っています。
そして、`country` テーブルは、10 行のデータを持っています。
この時点で、あなたは `yii2basic` という名前のデータベースを持ち、その中に三つのカラムを持つ `country` というテーブルがあり、`country` テーブルは 10 行のデータを持っている、ということになります。
DB 接続を構成する<a name="configuring-db-connection"></a>
......@@ -58,8 +55,7 @@ DB 接続を構成する<a name="configuring-db-connection"></a>
(例えば、MySQL のための `pdo_mysql`) の両方をインストール済みであることを確認してください。
アプリケーションがリレーショナルデータベースを使う場合、これは基本的な必要条件です。
これらがインストール済みなら、`config/db.php` というファイルを開いて、あなたのデータベースに適合するように
パラメータを変更してください。既定値では、このファイルは下記の記述を含んでいます:
これらがインストール済みなら、`config/db.php` というファイルを開いて、あなたのデータベースに適合するようにパラメータを変更してください。デフォルトでは、このファイルは下記の記述を含んでいます。
```php
<?php
......@@ -73,15 +69,15 @@ return [
];
```
この `config/db.php` というファイルは典型的なファイルベースの [コンフィギュレーション](concept-configurations.md) ツールです。
このコンフィギュレーションファイルが [[yii\db\Connection]] インスタンスの作成と初期化に必要なパラメータを規定します。そして、
[[yii\db\Connection]] インスタンスを通じて、背後のデータベースに対して SQL クエリを実行することが出来るようになります。
この `config/db.php` というファイルは典型的なファイルベースの [構成情報](concept-configurations.md)ツールです。
この構成情報ファイルが [[yii\db\Connection]] インスタンスの作成と初期化に必要なパラメータを規定します。そして、
[[yii\db\Connection]] インスタンスを通じて、背後のデータベースに対する SQL クエリを実行することが出来るようになります。
上記のようにして構成された DB 接続は、アプリケーションコードの中で `Yii::$app->db` という式でアクセスすることが出来ます。
> Info|情報: `config/db.php` は、メインのアプリケーションコンフィギュレーションファイルである `config/web.php` にインクルードされます。
> Info|情報: `config/db.php` は、メインのアプリケーション構成情報ファイルである `config/web.php` にインクルードされます。
この `config/web.php`[アプリケーション](structure-applications.md) インスタンスが初期化される仕方を規定します。
更なる情報については、[コンフィギュレーション](concept-configurations.md) の節を参照してください。
詳しい情報については、[構成情報](concept-configurations.md) の節を参照してください。
アクティブレコードを作成する<a name="creating-active-record"></a>
......@@ -105,9 +101,9 @@ class Country extends ActiveRecord
`Country` クラスは [[yii\db\ActiveRecord]] を拡張しています。この中には一つもコードを書く必要はありません。
単に上記のコードだけで、Yii は関連付けられたテーブル名をクラス名から推測します。
> Info|情報: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] メソッドをオーバーライドして、関連づけられたテーブル名を明示的に定することが出来ます。
> Info|情報: クラス名とテーブル名を直接に合致させることが出来ない場合は、[[yii\db\ActiveRecord::tableName()]] メソッドをオーバーライドして、関連づけられたテーブル名を明示的に定することが出来ます。
`Country` クラスを使うことによって、以下のコード断片で示すように、`country` テーブルの中のデータを簡単に操作することが出来ます:
`Country` クラスを使うことによって、以下のコード断片で示すように、`country` テーブルの中のデータを簡単に操作することが出来ます
```php
use app\models\Country;
......@@ -127,18 +123,16 @@ $country->save();
```
> Info|情報: アクティブレコードは、オブジェクト指向の流儀でデータベースのデータにアクセスし、操作する強力な方法です。
[アクティブレコード](db-active-record.md) の節で、更に詳細な情報を得ることが出来ます。
もう一つの方法として、[データアクセスオブジェクト(DAO)](db-dao.md) と呼ばれる、より低レベルなデータアクセス方法を使って
データベースを操作することも出来ます。
[アクティブレコード](db-active-record.md) の節で、詳細な情報を得ることが出来ます。
もう一つの方法として、[データアクセスオブジェクト](db-dao.md) と呼ばれる、より低レベルなデータアクセス方法を使ってデータベースを操作することも出来ます。
アクションを作成する<a name="creating-action"></a>
--------------------
国データをエンドユーザに見えるようにするために、新しいアクションを作成する必要があります。
これまでの節でしたように `site` コントローラの中に新しいアクションを置くのではなく、国データに関係する全てのアクションに
限定した新しいコントローラを作成する方が理にかなうでしょう。この新しいコントローラを `CountryController` と名付けます。
そして、下記に示すように、`index` アクションをその中に作成します。
これまでの節でしたように `site` コントローラの中に新しいアクションを置くのではなく、国データに関係する全てのアクションに限定した新しいコントローラを作成する方が理にかなうでしょう。
この新しいコントローラを `CountryController` と名付けます。そして、下記に示すように、`index` アクションをその中に作成します。
```php
......@@ -179,9 +173,9 @@ class CountryController extends Controller
`index` アクションは `Country::find()` を呼び出します。
このアクティブレコードのメソッドは DB クエリを構築して、`country` テーブルから全てのデータを読み出します。
一回のリクエストで返される国の数を制限するために、クエリは [[yii\data\Pagination]] オブジェクトの助けを借りてページ付けされます。
`Pagination` オブジェクトは二つの目的に奉仕します:
`Pagination` オブジェクトは二つの目的に奉仕します
* クエリによって表現される SQL 文に `offset` 句と `limit` 句をセットして、一度に一ページ分のデータだけ (1ページ最大5行)を返すようにします。
* クエリによって表現される SQL 文に `offset` 句と `limit` 句をセットして、一度に一ページ分のデータだけ (1ページ最大5行) を返すようにします。
* 次の項で説明されるように、一連のページボタンからなるページャをビューに表示するために使われます。
コードの最後で、`index` アクションは `index` と言う名前のビューをレンダリングしていますが、このとき、国データはもちろん、そのページ付け情報もビューに渡されます。
......@@ -192,7 +186,7 @@ class CountryController extends Controller
最初に、`views` ディレクトリの下に `country` という名前のサブディレクトリを作ってください。
このフォルダが `country` コントローラによって表示される全てのビューを保持するのに使われます。
`views/country` ディレクトリの中に、下記のコードを含む `index.php` という名前のファイルを作成します:
`views/country` ディレクトリの中に、下記のコードを含む `index.php` という名前のファイルを作成します
```php
<?php
......@@ -214,15 +208,14 @@ use yii\widgets\LinkPager;
ビューは国データの表示に関連して二つの部分に分けられます。
最初の部分では、提供された国データがたどられて、HTML の順序無しリストとしてレンダリングされます。
第二の部分では、アクションから渡されたページ付け情報を使って、[[yii\widgets\LinkPager]]
ウィジェットがレンダリングされます。
第二の部分では、アクションから渡されたページ付け情報を使って、[[yii\widgets\LinkPager]] ウィジェットがレンダリングされます。
`LinkPager` ウィジェットはページボタンのリストを表示します。ボタンのどれかをクリックすると、対応するページの国データが更新表示されます。
試してみる<a name="trying-it-out"></a>
----------
上記のコード全てがどのように動作するかを見るために、ブラウザで下記の URL をアクセスします:
上記のコード全てがどのように動作するかを見るために、ブラウザで下記の URL をアクセスします
```
http://hostname/index.php?r=country/index
......@@ -232,8 +225,8 @@ http://hostname/index.php?r=country/index
最初、ページは5つの国を表示しています。
そして、国リストの下には、4つのボタンを持ったページャがあります。
"2" のボタンをクリックすると、ページはデータベースから次の5つの国、すなわち、2ページ目のレコードを表示します。
より注意深く観察すると、ブラウザの URL も次のように変ったことに気付くでしょう:
"2" のボタンをクリックすると、ページはデータベースにある次の5つの国、すなわち、2ページ目のレコードを表示します。
注意深く観察すると、ブラウザの URL も次のように変ったことに気付くでしょう。
```
http://hostname/index.php?r=country/index&page=2
......@@ -241,8 +234,8 @@ http://hostname/index.php?r=country/index&page=2
舞台裏では、[[yii\data\Pagination|Pagination]] が、データセットをページ付けするのに必要な全ての機能を提供しています。
* 最初[[yii\data\Pagination|Pagination]] は、1ページ目を表しています。
これは、国の SELECT クエリが `LIMIT 5 OFFSET 0` という句を伴うことを示しています。
* 初期状態では[[yii\data\Pagination|Pagination]] は、1ページ目を表しています。
これを反映して、国の SELECT クエリは `LIMIT 5 OFFSET 0` という句を伴うことになります。
その結果、最初の5つの国が取得されて表示されます。
* [[yii\widgets\LinkPager|LinkPager]] ウィジェットは、[[yii\data\Pagination::createUrl()|Pagination]] によって作成された URL を使ってページボタンをレンダリングします。
URL は、別々のページ番号を表現する `page` というクエリパラメータを含んだものになります。
......@@ -259,4 +252,4 @@ http://hostname/index.php?r=country/index&page=2
次の節では、[Gii](tool-gii.md) と呼ばれる強力なコード生成ツールを使う方法を学びます。
このツールは、データベーステーブルのデータを取り扱うための「作成・読出し・更新・削除 (CRUD)」操作のような、通常必要とされることが多いいくつかの機能の迅速な実装を手助けしてくれるものです。
実際のところ、あなたがたった今書いたばかりのコードは、Gii ツールを使って Yii によって自動的に生成することが出来ます。
実際のところ、あなたがたった今書いたばかりのコードは、Gii ツールを使えば、全部、Yii が自動的に生成してくれるものです。
フォームを扱う
==============
この節では、ユーザからデータを取得するフォームを持つ新しいページを作る方法を説明します。
この節では、ユーザからデータを取得するためのフォームを持つ新しいページを作る方法を説明します。
このページは名前の入力フィールドとメールの入力フィールドを持つフォームを表示します。
ユーザからこれら二つの情報を受け取った後、ページは確認のために入力された値をエコーバックします。
ユーザからこれら二つの情報を受け取った後、ページは入力された値を確認のためにエコーバックします。
この目的を達するために、一つの [アクション](structure-controllers.md) と 二つの [ビュー](structure-views.md) を作成する以外に、
一つの [モデル](structure-models.md) をも作成します。
このチュートリアルを通じて、次のことをする方法を学びます:
このチュートリアルを通じて、次の方法を学びます。
* フォームを通じてユーザが入力したデータを表す [モデル](structure-models.md) を作成する
* 入力されたデータを検証する規則を宣言する
* [ビュー](structure-views.md) の中で HTML フォームを構築する
* フォームを通じてユーザによって入力されるデータを表す [モデル](structure-models.md) を作成する方法
* 入力されたデータを検証する規則を宣言する方法
* [ビュー](structure-views.md) の中で HTML フォームを構築する方法
モデルを作成する<a name="creating-model"></a>
----------------
ユーザからの入力を要求するデータは下に示されているように `EntryForm` モデルクラスとして表現され、`models/EntryForm.php` というファイルに保存されます。
ユーザに入力してもらうデータは、下に示されているように `EntryForm` モデルクラスとして表現され、`models/EntryForm.php` というファイルに保存されます。
クラスファイルの命名規約についての詳細は [クラスのオートロード](concept-autoloading.md) の節を参照してください。
```php
......@@ -49,15 +49,15 @@ class EntryForm extends Model
> Info|情報: [[yii\base\Model]] はデータベーステーブルと関連*しない*モデルクラスの親として使われます。
データベーステーブルと対応するモデルクラスでは、通常は [[yii\db\ActiveRecord]] が親になります。
`EntryForm` クラスは二つのパブリックメンバー、`name``email` を持っており、これらがユーザによって入力されたデータを保管するのに使われます。
`EntryForm` クラスは二つのパブリックメンバー、`name``email` を持っており、これらがユーザによって入力されるデータを保管するのに使われます。
このクラスはまた `rules()` という名前のメソッドを持っています。このメソッドがデータを検証する一連の規則を返します。
上記で宣言されている検証規則は次のことを述べています:
上記で宣言されている検証規則は次のことを述べています。
* `name``email` は、ともに値を要求される
* `email` のデータは構文的に正当なメールアドレスでなければならない
`EntryForm` オブジェクトにユーザが入力したデータを投入した後、[[yii\base\Model::validate()|validate()]] を呼んでデータ検証ルーチンを始動することが出来ます。
データ検証が失敗すると [[yii\base\Model::hasErrors|hasErrors]] プロパティが true に設定され、
ユーザによって入力されたデータを `EntryForm` オブジェクトに投入した後、[[yii\base\Model::validate()|validate()]] を呼んでデータ検証ルーチンを始動することが出来ます。
データ検証が失敗すると [[yii\base\Model::hasErrors|hasErrors]] プロパティが true に設定されます。
そして、[[yii\base\Model::getErrors|errors]] を通じて、どのような検証エラーが発生したかを知ることが出来ます。
......@@ -99,32 +99,33 @@ class SiteController extends Controller
$model = new EntryForm;
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// $model に受け取ったデータを検証する
// $model に有効なデータを受け取った場合
// ここで $model について意味のあることを何かする ...
// ここで $model について何か意味のあることをする ...
return $this->render('entry-confirm', ['model' => $model]);
} else {
// ページの初期表示か、または、何か検証エラーがある
// ページの初期表示か、または、何か検証エラーがある場合
return $this->render('entry', ['model' => $model]);
}
}
}
```
アクションは最初に `EntryForm` オブジェクトを生成します。そして、次に、モデルに `$_POST` のデータ、
Yii においては [[yii\web\Request::post()]] によって提供されるデータを投入しようと試みます。
モデルへのデータ投入が成功した場合(つまり、ユーザが HTML フォームを送信した場合)、アクションは
[[yii\base\Model::validate()|validate()]] を呼んで、入力された値が有効なものであることを確認します。
アクションは最初に `EntryForm` オブジェクトを生成します。そして、次に、モデルに `$_POST` のデータ、Yii においては [[yii\web\Request::post()]]
によって提供されるデータを投入しようと試みます。
モデルへのデータ投入が成功した場合(つまり、ユーザが HTML フォームを送信した場合)、アクションは[[yii\base\Model::validate()|validate()]]
を呼んで、入力された値が有効なものであることを確認します。
> Info|情報: `Yii::$app` という式は [アプリケーション](structure-applications.md) インスタンスを表現します。
これはグローバルにアクセス可能なシングルトンです。これは、また、特定の機能性をサポートする `request`
`response`, `db` などのコンポーネントを提供する [サービスロケータ](concept-service-locator.md) でもあります。
上記のコードでは、アプリケーションインスタンスの`request` コンポーネントが `$_POST` データにアクセスするために使われています。
これはグローバルにアクセス可能なシングルトンです。
これは、また、特定の機能性をサポートする `request``response``db` などのコンポーネントを提供する
[サービスロケータ](concept-service-locator.md) でもあります。
上記のコードでは、アプリケーションインスタンスの `request` コンポーネントが `$_POST` データにアクセスするために使われています。
すべてが適正である場合、アクションは `entry-confirm` という名前のビューを表示して、データの送信が成功したことをユーザに確認させます。
データが送信されなかったり、データがエラーを含んでいたりする場合は、`entry` ビューが表示され、その中で HTML フォームが
(もし有れば)検証エラーのメッセージとともに表示されます。
(もし有れば) 検証エラーのメッセージとともに表示されます。
> Note|注意: この簡単な例では、有効なデータ送信に対して単純に確認ページを表示しています。実際の仕事では、
[フォーム送信の諸問題](http://en.wikipedia.org/wiki/Post/Redirect/Get) を避けるために、
......@@ -143,7 +144,7 @@ Yii 縺ォ縺翫>縺ヲ縺ッ [[yii\web\Request::post()]] 縺ォ繧医▲縺ヲ謠蝉セ帙&繧後k繝
<?php
use yii\helpers\Html;
?>
<p>あなたは次の情報を入力しました:</p>
<p>あなたは次の情報を入力しました</p>
<ul>
<li><label>名前</label>: <?= Html::encode($model->name) ?></li>
......@@ -181,7 +182,7 @@ use yii\widgets\ActiveForm;
試してみる<a name="trying-it-out"></a>
----------
どのように動作するかを見るために、ブラウザで下記の URL をアクセスしてください:
どのように動作するかを見るために、ブラウザで下記の URL をアクセスしてください。
```
http://hostname/index.php?r=site/entry
......@@ -190,7 +191,7 @@ http://hostname/index.php?r=site/entry
二つの入力フィールドを持つフォームを表示するページが表示されるでしょう。
それぞれの入力フィールドの前には、どんなデータを入力すべきかを示すラベルがあります。
何も入力せずに、あるいは、無効なメールアドレスを入力して送信ボタンをクリックすると、
それぞれ問題のある入力フィールドの続きにエラーメッセージが表示されます。
それぞれ問題のある入力フィールドの後ろにエラーメッセージが表示されます。
![検証エラーのあるフォーム](images/start-form-validation.png)
......@@ -201,13 +202,11 @@ http://hostname/index.php?r=site/entry
### 魔法の説明<a name="magic-explained"></a>
あなたは、舞台裏で HTML フォームがどのように動いているのか、不思議に思うかも知れません。なぜなら、
フォームが、ほとんど魔法のように、各入力フィールドのラベルを表示し、データを正しく入力しない場合には
ページをリロードすることなくエラーメッセージを表示するからです。
あなたは、舞台裏で HTML フォームがどのように動いているのか、不思議に思うかも知れません。
なぜなら、フォームが、ほとんど魔法のように、各入力フィールドのラベルを表示し、データを正しく入力しなかった場合には、ページをリロードすることなく、エラーメッセージを表示するからです。
そう、データの検証は、最初に JavaScript を使ってクライアントサイドで実行され、次に PHP によってサーバーサイドで実行されます。
[[yii\widgets\ActiveForm]] は、賢いことに、`EntryForm` で宣言した検証規則を抽出し、それを実行可能な JavaScript コードに変換して、
JavaScript を使ってデータ検証を実行します。
[[yii\widgets\ActiveForm]] は、賢いことに、`EntryForm` で宣言した検証規則を抽出し、それを実行可能な JavaScript コードに変換して、JavaScript を使ってデータ検証を実行します。
ブラウザで JavaScript を無効にした場合でも、`actionEntry()` メソッドで示されているように、サーバーサイドでの検証は実行されます。
これにより、どのような状況であっても、データの有効性が保証されます。
......@@ -217,7 +216,7 @@ JavaScript 繧剃スソ縺」縺ヲ繝繧ソ讀懆ィシ繧貞ョ溯。後@縺セ縺吶
入力フィールドのラベルは、モデルのプロパティ名を使用して、`field()` メソッドによって生成されます。
例えば、`name` というプロパティから `Name` というラベルが生成されます。
ビューの中で、下記のコードのように、ラベルをカスタマイズすることも出来ます:
ビューの中で、下記のコードのように、ラベルをカスタマイズすることも出来ます。
```php
<?= $form->field($model, 'name')->label('お名前') ?>
......
Gii でコードを生成する
======================
この節では、[Gii](tool-gii.md) を使って、ウェブサイトの一般的な機能のいくつかを実装するコードを
自動的に生成する方法を説明します。Gii を使ってコードを自動生成することは、Gii のウェブページに
表示される指示に対して正しい情報を入力するだけのことです。
この節では、[Gii](tool-gii.md) を使って、ウェブサイトの一般的な機能のいくつかを実装するコードを自動的に生成する方法を説明します。
Gii を使ってコードを自動生成することは、Gii のウェブページに表示される指示に対して正しい情報を入力するだけのことです。
このチュートリアルを通じて、次のことをする方法を学びます:
このチュートリアルを通じて、次のことを学びます。
* アプリケーションで Gii を有効にする
* Gii を使って、アクティブレコードのクラスを生成する
* Gii を使って、DB テーブルの CRUD 操作を実装するコードを生成する
* Gii によって生成されるコードをカスタマイズする
* アプリケーションで Gii を有効にする方法
* Gii を使って、アクティブレコードのクラスを生成する方法
* Gii を使って、DB テーブルの CRUD 操作を実装するコードを生成する方法
* Gii によって生成されるコードをカスタマイズする方法
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]] プロパティの中で構成することで有効にすることが出来ます。
アプリケーションを生成した仕方にもよりますが、`config/web.php` のコンフィギュレーションファイルの中に、多分、下記のコードが既に提供されているでしょう:
アプリケーションを生成した仕方にもよりますが、`config/web.php` の構成情報ファイルの中に、多分、下記のコードが既に提供されているでしょう。
```php
$config = [ ... ];
......@@ -29,8 +28,8 @@ if (YII_ENV_DEV) {
}
```
上記のコンフィギュレーションは、[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは
`gii` という名前のモジュールをインクルードすべきこと、そして `gii`[[yii\gii\Module]] というクラスのものであることを記述しています。
上記の構成情報は[開発環境](concept-configurations.md#environment-constants) において、アプリケーションは
`gii` という名前のモジュールをインクルードすべきこと、そして `gii`[[yii\gii\Module]] というクラスであることを記述しています。
アプリケーションの [エントリスクリプト](structure-entry-scripts.md) である `web/index.php` をチェックすると、次の行があることに気付くでしょう。
これは本質的には `YII_ENV_DEV` を true に設定するものです。
......@@ -39,15 +38,15 @@ if (YII_ENV_DEV) {
defined('YII_ENV') or define('YII_ENV', 'dev');
```
この行のおかげで、アプリケーションは開発モードになり、上記のコンフィギュレーションによって、Gii が有効になります。
これで、下記の URL によって Gii にアクセスすることが出来ます:
この行のおかげで、アプリケーションは開発モードになっており、上記の構成情報によって、Gii が既に有効になっています。
これで、下記の URL によって Gii にアクセスすることが出来ます。
```
http://hostname/index.php?r=gii
```
> Note|注意: ローカルホスト以外のマシンから Gii にアクセスしようとすると、既定ではセキュリティ上の
> 目的からアクセスが拒否されます。下記のように Gii を構成して、許可される IP アドレスを追加することが出来ます。
> Note|注意: ローカルホスト以外のマシンから Gii にアクセスしようとすると、既定ではセキュリティ上の理由でアクセスが拒否されます。
> 記のように Gii を構成して、許可される IP アドレスを追加することが出来ます。
>
```php
'gii' => [
......@@ -63,7 +62,7 @@ http://hostname/index.php?r=gii
------------------------------------
Gii を使ってアクティブレコードのクラスを生成するためには、(Gii のインデックスページのリンクをクリックして) "Model Generator" を選びます。
そして、次のようにフォームに入力します:
そして、次のようにフォームに入力します。
* Table Name: `country`
* Model Class: `Country`
......@@ -74,26 +73,24 @@ Gii 繧剃スソ縺」縺ヲ繧「繧ッ繝ぅ繝悶Ξ繧ウ繝シ繝峨繧ッ繝ゥ繧ケ繧堤函謌舌☆繧九◆繧√↓
そうすると、結果として作成されるクラスファイルのリストに `models/Country.php` が挙ってきます。
クラスファイルの名前をクリックすると、内容をプレビュー出来ます。
Gii を使うときに、既に同じファイルを作成していて、それを上書きしようとしている場合は、
ファイル名の隣の `diff` ボタンをクリックして、生成されようとしているコードと既存のバージョンの
違いを見てください。
Gii を使うときに、既に同じファイルを作成していて、それを上書きしようとしている場合は、ファイル名の隣の `diff`
ボタンをクリックして、生成されようとしているコードと既存のバージョンの違いを見てください。
![Model Generator のプレビュー](images/start-gii-model-preview.png)
既存のファイルを上書きしようとしているときは、"overwrite" の隣のチェックボックスをチェックしてから "Generate" ボタンをクリックします。
新しいファイルを作成しようとしているときは、単に "Generate" を押せば大丈夫です。
次に、コードの生成が成功したことを示す確認ページが表示されます。既存のファイルがあった場合は、
それが新しく生成されたコードで上書きされたことを示すメッセージも同じく表示されます。
次に、コードの生成が成功したことを示す確認ページが表示されます。
既存のファイルがあった場合は、それが新しく生成されたコードで上書きされたことを示すメッセージも同じく表示されます。
CRUD コードを生成する<a name="generating-crud"></a>
---------------------
CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、
ほとんどのウェブサイトでデータを扱うときによく用いられる4つのタスクを表しています。
CRUD は Create(作成)、Read(読出し)、Update(更新)、そして Delete(削除) を意味しており、ほとんどのウェブサイトでデータを扱うときによく用いられる4つのタスクを表しています。
Gii を使って CRUD 機能を作成するためには、(Gii のインデックスページのリンクをクリックして) "CRUD Generator" を選びます。
「国リスト」のサンプルのためには、以下のようにフォームに入力します:
「国リスト」のサンプルのためには、以下のようにフォームに入力します。
* Model Class: `app\models\Country`
* Search Model Class: `app\models\CountrySearch`
......@@ -106,31 +103,31 @@ Gii 繧剃スソ縺」縺ヲ CRUD 讖溯繧剃ス懈縺吶k縺溘a縺ォ縺ッ縲(Gii 縺ョ繧、繝ウ繝ャ繧
![CRUD Generator のプレビュー](images/start-gii-crud-preview.png)
以前に(ガイドのデータベースの節で)`controllers/CountryController.php`
`views/country/index.php` のファイルを作成していた場合は、それらを置き換えるために "overwrite" の
チェックボックスをチェックしてください。(以前のバージョンは フル機能の CRUD をサポートしていません。)
以前に(ガイドのデータベースの節で)`controllers/CountryController.php``views/country/index.php` のファイルを作成していた場合は、それらを置き換えるために
"overwrite" のチェックボックスをチェックしてください。(以前のバージョンは フル機能の CRUD をサポートしていません。)
試してみる<a name="trying-it-out"></a>
----------
どのように動作するかを見るために、ブラウザを使って下記の URL にアクセスしてください:
どのように動作するかを見るために、ブラウザを使って下記の URL にアクセスしてください。
```
http://hostname/index.php?r=country/index
```
データグリッドがデータベーステーブルから取得した国を表示しているページが表示されます。
グリッドをソートしたり、カラムのヘッダに検索条件を入力してグリッドをフィルターしたりすることが出来ます。
グリッドをソートしたり、カラムのヘッダに検索条件を入力してグリッドにフィルタを適用したりすることが出来ます。
グリッドに表示されているそれぞれの国について、詳細を見たり、更新したり、または削除したりすることが出来ます。また、グリッドの上にある "Create Country" ボタンをクリックすると、新しい国データを作成するためのフォームが利用に供されます。
グリッドに表示されているそれぞれの国について、詳細を見たり、更新したり、または削除したりすることが出来ます。
また、グリッドの上にある "Create Country" ボタンをクリックすると、新しい国データを作成するためのフォームが利用に供されます。
![国リストのデータグリッド](images/start-gii-country-grid.png)
![国データを更新する](images/start-gii-country-update.png)
下記が Gii によって生成されるファイルのリストです。
これらの機能がどのように実装されているかを調査したい場合、また、これらの機能をカスタマイズしたいときに参照してください:
これらの機能がどのように実装されているかを調査したい場合、また、これらの機能をカスタマイズしたいときに参照してください。
* Controller: `controllers/CountryController.php`
* Models: `models/Country.php` and `models/CountrySearch.php`
......@@ -138,7 +135,7 @@ http://hostname/index.php?r=country/index
> Info|情報: Gii は非常にカスタマイズしやすく拡張しやすいコード生成ツールとして設計されています。
これを賢く使うと、アプリケーションの開発速度を大いに高めることが出来ます。
更なる詳細は、[Gii](tool-gii.md) の節を参照してください。
詳細については、[Gii](tool-gii.md) の節を参照してください。
まとめ<a name="summary"></a>
......
「こんにちは」と言う
====================
この節では、アプリケーションに新しい「こんにちは」というページを作成する方法を説明します。
この目的を達するために、[アクション](structure-controllers.md#creating-actions)[ビュー](structure-views.md) を作成することになります:
この節では、アプリケーションに「こんにちは」という新しいページを作成する方法を説明します。
この目的を達するために、[アクション](structure-controllers.md#creating-actions)[ビュー](structure-views.md) を作成することになります。
* アプリケーションがこのページへのリクエストをそのアクションに送付し、
* 次にそのアクションが "Hello" という言葉をエンドユーザに示すビューを表示します。
このチュートリアルを通じて、次の三つのことを学びます:
このチュートリアルを通じて、三つのことを学びます。
1. リクエストに応える [アクション](structure-controllers.md) をどのようにして作るか、
2. レスポンスの内容を構成する [ビュー](structure-views.md) をどのようにして作るか、そして、
3. アプリケーションはどのようにしてリクエストを [アクション](structure-controllers.md#creating-actions) に送付するか。
1. リクエストに応える [アクション](structure-controllers.md) を作成する方法
2. レスポンスの内容を構成する [ビュー](structure-views.md) を作成する方法
3. アプリケーションがリクエストを [アクション](structure-controllers.md#creating-actions) に送付する仕組み
アクションを作成する<a name="creating-action"></a>
--------------------
「こんにちは」のタスクのために、`message` パラメータをリクエストから読んでそのメッセージをユーザに表示して返す `say` [アクション](structure-controllers.md#creating-actions) を作ります。
リクエストが `message` パラメータを提供しない場合は、このアクションは既定値として "Hello" というメッセージを表示するものとします。
「こんにちは」のタスクのために、`message` パラメータをリクエストから読んで、そのメッセージをユーザに表示して返す `say` [アクション](structure-controllers.md#creating-actions) を作ります。
リクエストが `message` パラメータを提供しない場合は、アクションは既定値として "Hello" というメッセージを表示するものとします。
> Info|情報: [アクション](structure-controllers.md#creating-actions) は、エンドユーザが直接に参照して実行できるオブジェクトです。
アクションは [コントローラ](structure-controllers.md) によってグループ化されます。
......@@ -27,7 +27,7 @@
アクションは [コントローラ](structure-controllers.md) の中で宣言されなければなりません。
話を簡単にするために、`say` アクションを既存の `SiteController` の中で宣言しましょう。
このコントローラは `controllers/SiteController.php` というクラスファイルの中で定義されています。
次のようにして、新しいアクションを書き始めます:
次のようにして、新しいアクションを書き始めます。
```php
<?php
......@@ -47,9 +47,9 @@ class SiteController extends Controller
}
```
上記のコードで、`say` アクションは `SiteController` クラスの中で `actionSay` という名前のメソッドとして定義されています。
Yii はコントローラクラスの中でアクションのメソッドとアクションでないメソッドを区別するために、`action` という接頭辞を使います。
`action` という接頭辞の後の名前がアクション ID にマップされます。
上記のコードでは、`SiteController` クラスの中で、`say` アクションが `actionSay` という名前のメソッドとして定義されています。
Yii はコントローラクラスの中で、アクションのメソッドとアクションでないメソッドを区別するために、`action` という接頭辞を使います。
`action` という接頭辞の後に続く名前がアクション ID にマップされます。
アクションを命名するについては、Yii がアクション ID をどのように取り扱うかを知っているべきです。
アクション ID は常に小文字で参照されます。
......@@ -57,16 +57,16 @@ Yii 縺ッ繧ウ繝ウ繝医Ο繝シ繝ゥ繧ッ繝ゥ繧ケ縺ョ荳ュ縺ァ繧「繧ッ繧キ繝ァ繝ウ縺ョ繝。繧ス繝ラ縺ィ繧「
アクションメソッドの名前は、アクション ID からダッシュを全て削除し、各単語の先頭の文字を大文字にした結果に `action` という接頭辞を付けたものとします。
例えば、アクション ID `create-comment` に対応するアクションメソッド名は `actionCreateComment` となります。
私たちの例では、このアクションメソッドは `$message` というパラメータを取ります。
そして、このパラメータは `"Hello"` という既定値を取ります
(PHP で関数やメソッドの引数について既定値をセットするのと全く同じ方法を使います)。
アプリケーションは、リクエストを受け取って、当該リクエストの処理を `say` アクションに任せると決定した場合、リクエストの中に同じ名前の付いたパラメータがあれば、それをこのパラメータに代入します。
私たちの例では、このアクションメソッドは `"Hello"` という既定値をもつ `$message` というパラメータを取ります
(PHP で関数やメソッドの引数に既定値をセットするのと全く同じ方法です)。
アプリケーションは、リクエストを受け取ったとき、当該リクエストの処理を `say` アクションが担当すべきであると決定した場合は、
リクエストの中に同じ名前の付いたパラメータがあれば、その値をこのパラメータに代入します。
言い換えれば、もしリクエストに `"GoodBye"` という値の `message` パラメータが入っていれば、アクションの `$message` 変数にその値が割り当てられます。
このアクションメソッドの中では、[[yii\web\Controller::render()|render()]] が呼ばれて `say` と言う名前の [ビュー](structure-views.md) ファイルがレンダリングされます。
`message` パラメータも同時にビューに渡され、そこで使用されます。
レンダリング結果はアクションメソッドによって返されます。
返された結果はアプリケーションによって受け取られ、ブラウザ上でエンドユーザに(完全な HTML ページの一部として)表示されます。
返された結果はアプリケーションによって受け取られ、ブラウザ上でエンドユーザに (完全な HTML ページの一部として) 表示されます。
ビューを作成する<a name="creating-view"></a>
......@@ -98,7 +98,7 @@ use yii\helpers\Html;
試してみる<a name="trying-it-out"></a>
----------
アクションとビューを作成したら、新しいページに下記の URL でアクセスしてみましょう:
アクションとビューを作成したら、下記の URL で新しいページにアクセスすることが出来ます。
```
http://hostname/index.php?r=site/say&message=Hello+World
......@@ -106,11 +106,11 @@ http://hostname/index.php?r=site/say&message=Hello+World
![Hello World](images/start-hello-world.png)
この URL は "Hello World" を表示するページになります。
この URL は、結果として、"Hello World" を表示するページになります。
このページはアプリケーションの他のページと同じヘッダとフッタを共有します。
URL から `message` パラメータを省略すると、"Hello" だけを表示するページを見ることになるでしょう。
これは、`message``actionSay()` メソッドにパラメータとして渡され、省略された場合には、既定値である `"Hello"` が代りに使われるからです。
これは、`message``actionSay()` メソッドにパラメータとして渡されるものであり、それが省略された場合には、既定値である `"Hello"` が代りに使われるからです。
> Info|情報: 新しいページは他のページと同じヘッダとフッタを共有しますが、それは [[yii\web\Controller::render()|render()]] メソッドが `say` ビューの結果をいわゆる [レイアウト](structure-views.md#layouts) に自動的に埋め込むからです。
レイアウトは、この場合、`views/layouts/main.php` にあります。
......@@ -118,7 +118,7 @@ URL 縺九i `message` 繝代Λ繝。繝シ繧ソ繧堤怐逡・縺吶k縺ィ縲"Hello" 縺縺代r陦ィ遉コ
上記の URL の `r` パラメータについて、さらに説明が必要でしょう。
これは [ルート](runtime-routing.md)、すなわち、特定のアクションを指し示すアプリケーション全体で一意な ID を表します。
ルートの書式は `ControllerID/ActionID` です。
アプリケーションはリクエストを受け取ると、このパラメータをチェックし、`ControllerID` の部分を使って、このリクエストを処理するためにどのコントローラクラスのインスタンスを作成すべきかを決定します。
アプリケーションはリクエストを受け取ると、このパラメータ `r` をチェックし、`ControllerID` の部分を使って、このリクエストを処理するためにどのコントローラクラスのインスタンスを作成すべきかを決定します。
そして、コントローラは `ActionID` の部分を使って、実際の仕事をするためにどのアクションを呼び出すべきかを決定します。
この例で言えば、`site/say` というルートは、`SiteController` コントローラクラスと `say` アクションとして解決されます。
結果として、`SiteController::actionSay()` メソッドがリクエストを処理するために呼び出されます。
......
......@@ -23,13 +23,13 @@ Windows 縺ァ縺ッ縲ーComposer-Setup.exe](https://getcomposer.org/Composer-Setup.exe
以前に Composer をインストールしたことがある場合は、確実に最新のバージョンを使うようにしてください。
Composer は `composer self-update` コマンドを走らせてアップデートすることが出来ます。
Composer がインストールされたら、ウェブからアクセスできるフォルダーで下記のコマンドを実行することによって Yii をインストールすることが出来ます:
Composer がインストールされたら、ウェブからアクセスできるフォルダで下記のコマンドを実行することによって Yii をインストールすることが出来ます:
composer global require "fxp/composer-asset-plugin:1.0.0-beta4"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
最初のコマンドは [composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/) をインストールします。
これにより、Composer を通じて bower と npm のパッケージ依存関係を管理することが出来るようになります。
これにより、Composer を通じて bower と npm の依存パッケージを管理することが出来るようになります。
このコマンドは全体で一度だけ走らせれば十分です。
第二のコマンドは `basic` という名前のディレクトリに Yii をインストールします。
必要なら別のディレクトリ名を選ぶことも出来ます。
......@@ -38,9 +38,9 @@ Composer 縺後う繝ウ繧ケ繝医繝ォ縺輔l縺溘i縲√え繧ァ繝悶°繧峨い繧ッ繧サ繧ケ縺ァ縺阪
> これは、Comoser が Github API の転送レート制限にひっかかったためです。
> Composer は全てのパッケージのための大量の情報を Github から読み出さなければならないので、こうなるのは普通のことです。
> Github にログインすると API の転送レート制限が緩和され、Composer が仕事を続けることが出来るようになります。
> 更なる詳細については、[Composer documentation](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens) を参照してください。
> 細については、[Composer documentation](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens) を参照してください。
> Tip|ヒント: Yii の最新の開発バージョンをインストールしたい場合は、[stability option](https://getcomposer.org/doc/04-schema.md#minimum-stability) を追加した次のコマンドを代りに使うことが出来ます:
> Tip|ヒント: Yii の最新の開発バージョンをインストールしたい場合は、[stability option](https://getcomposer.org/doc/04-schema.md#minimum-stability) を追加した次のコマンドを代りに使うことが出来ます。
>
> composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
>
......@@ -50,12 +50,12 @@ Composer 縺後う繝ウ繧ケ繝医繝ォ縺輔l縺溘i縲√え繧ァ繝悶°繧峨い繧ッ繧サ繧ケ縺ァ縺阪
アーカイブファイルからインストールする<a name="installing-from-archive-file"></a>
--------------------------------------
アーカイブファイルから Yii をインストールするには、三つのステップを踏みます:
アーカイブファイルから Yii をインストールするには、三つのステップを踏みます。
1. [yiiframework.com](http://www.yiiframework.com/download/) からアーカイブファイルをダウンロードする。
2. ダウンロードしたファイルをウェブからアクセスできるフォルダーに展開する。
3. `config/web.php` ファイルを編集して、`cookieValidationKey` というコンフィギュレーション項目に秘密キーを入力する
(Composer を使って Yii をインストールするときは、これは自動的に実行されます):
(Composer を使って Yii をインストールするときは、これは自動的に実行されます)。
```php
// !!! 下記に(もし空白なら)秘密キーを入力する - これはクッキー検証のために必要
......@@ -69,25 +69,25 @@ Composer 縺後う繝ウ繧ケ繝医繝ォ縺輔l縺溘i縲√え繧ァ繝悶°繧峨い繧ッ繧サ繧ケ縺ァ縺阪
上記のインストール方法の説明は Yii のインストールの仕方を示すものですがそれは同時にそのままで動作する基本的なウェブアプリケーションを作成するものでもあります
これは小さなプロジェクトを開始するのに良い方法ですあるいは Yii の学習を始めたばかりの場合にもこれで良いでしょう
しかし他のインストールオプションも利用可能です:
しかし他のインストールオプションも利用可能です
* コアフレームワークだけをインストールしアプリケーション全体を一から構築したい場合は
[アプリケーションを一から構築する](tutorial-start-from-scratch.md) で説明されている指示に従うことが出来ます
* もっと洗練されたチーム開発環境により適したアプリケーションから開始したい場合は
[アドバンストアプリケーションテンプレート](tutorial-advanced-app.md) をインストールすることを考慮することが出来ます
* コアフレームワークだけをインストールしアプリケーション全体を一から構築したい場合は[アプリケーションを一から構築する](tutorial-start-from-scratch.md)
で説明されている指示に従うことが出来ます
* もっと洗練されたチーム開発環境により適したアプリケーションから開始したい場合は [アドバンストアプリケーションテンプレート](tutorial-advanced-app.md)
をインストールすることを考慮することが出来ます
インストールを検証する<a name="verifying-installation"></a>
----------------------
インストール完了後ブラウザで下記の URL によってインストールされた Yii アプリケーションにアクセスすることが出来ます:
インストール完了後ブラウザで下記の URL によってインストールされた Yii アプリケーションにアクセスすることが出来ます
```
http://localhost/basic/web/index.php
```
この URL は、あなたが Yii を ウェブサーバのドキュメントルートディレクトリの下の `basic` という名前のディレクトリにインストールしたこと、
そしてウェブサーバがローカルマシン (`localhost`) で走つていると想定しています。
そして、ウェブサーバがローカルマシン (`localhost`) で走っていることを想定しています。
インストールされた環境に合うように URL を変更してください。
![Yii のインストールが成功](images/start-app-installed.png)
......@@ -97,7 +97,7 @@ http://localhost/basic/web/index.php
最低限の必要条件を満たしているかどうかは、次の方法のどちらかによってチェックすることが出来ます:
* ブラウザを使って `http://localhost/basic/requirements.php` という URL にアクセスする。
* 次のコマンドを実行する:
* 次のコマンドを実行する。
```
cd basic
......@@ -106,7 +106,8 @@ http://localhost/basic/web/index.php
Yii の最低必要条件を満たすように PHP のインストールを構成しなければなりません。
最も重要なことは、PHP 5.4 以上でなければならないということです。
また、アプリケーションがデータベースを必要とする場合は、[PDO PHP 拡張](http://www.php.net/manual/ja/pdo.installation.php) および対応するデータベースドライバ (MySQL データベースのための `pdo_mysql` など) をインストールしなければなりません。
また、アプリケーションがデータベースを必要とする場合は、[PDO PHP 拡張](http://www.php.net/manual/ja/pdo.installation.php) および対応するデータベースドライバ
(MySQL データベースのための `pdo_mysql` など) をインストールしなければなりません。
ウェブサーバを構成する<a name="configuring-web-servers"></a>
......@@ -114,11 +115,13 @@ Yii 縺ョ譛菴主ソヲ∵擅莉カ繧呈コ縺溘☆繧医≧縺ォ PHP 縺ョ繧、繝ウ繧ケ繝医繝ォ繧呈ァ区
> Info|情報: もし Yii の試運転をしているだけで、実運用のサーバに配置する意図がないのであれば、当面、この項は飛ばしても構いません。
上記の説明に従ってインストールされたアプリケーションは、[Apache HTTP サーバ](http://httpd.apache.org/) と [Nginx HTTP サーバ](http://nginx.org/) のどちらでも、また、Windows、Mac OS X、Linux のどれでも、PHP 5.4 以上を走らせている環境であれば、そのままの状態で動作するはずです。
上記の説明に従ってインストールされたアプリケーションは、[Apache HTTP サーバ](http://httpd.apache.org/) と [Nginx HTTP サーバ](http://nginx.org/) のどちらでも、
また、Windows、Mac OS X、Linux のどれでも、PHP 5.4 以上を走らせている環境であれば、そのままの状態で動作するはずです。
Yii 2.0 は、また、facebook の [HHVM](http://hhvm.com/) とも互換性があります。
ただし HHVM がネイティブの PHP とは異なる振舞いをする特殊なケースもいくつかありますので、HHVM を使うときはいくらか余分に注意を払う必要があります。
実運用のサーバでは、`http://www.example.com/basic/web/index.php` の代りに `http://www.example.com/index.php` という URL でアプリケーションにアクセス出来るようにウェブサーバを設定したいと思うかもしれません。
実運用のサーバでは、`http://www.example.com/basic/web/index.php` の代りに `http://www.example.com/index.php` という URL
でアプリケーションにアクセス出来るようにウェブサーバを設定したいと思うかもしれません。
そういう設定をするためには、ウェブサーバのドキュメントルートを `basic/web` フォルダに向けることが必要になります。
また、[ルーティングと URL 生成](runtime-routing.md) の節で述べられているように、URL から `index.php` を隠したいと思うかも知れません。
この節では、これらの目的を達するために Apache または Nginx サーバをどのように設定すれば良いかを学びます。
......@@ -128,7 +131,7 @@ Yii 2.0 縺ッ縲√∪縺溘’acebook 縺ョ [HHVM](http://hhvm.com/) 縺ィ繧ゆコ呈鋤諤ァ縺後
> Info|情報: ウェブサーバの設定を修正する権限のない共用ホスティング環境でアプリケーションが走る場合でも、
セキュリティ強化のためにアプリケーションの構造を調整することが出来ます。
更なる詳細については、[共有ホスティング環境](tutorial-shared-hosting.md) の節を参照してください。
細については、[共有ホスティング環境](tutorial-shared-hosting.md) の節を参照してください。
### 推奨される Apache の構成<a name="recommended-apache-configuration"></a>
......@@ -157,8 +160,8 @@ DocumentRoot "path/to/basic/web"
### 推奨される Nginx の構成<a name="recommended-nginx-configuration"></a>
[Nginx](http://wiki.nginx.org/) を使うためには、PHP を [FPM SAPI](http://jp1.php.net/install.fpm) としてインストールしていなければなりません。
下記の設定を使うことができます (`path/to/basic/web` の部分を `basic/web` の実際のパスに置き換え、
`mysite.local` を実際のサーバのホスト名に置き換えてください)。
下記の設定を使うことができます (`path/to/basic/web` の部分を `basic/web` の実際のパスに置き換え、`mysite.local`
を実際のサーバのホスト名に置き換えてください)。
```
server {
......@@ -200,8 +203,7 @@ server {
}
```
この構成を使う場合は、同時に `php.ini` ファイルで `cgi.fix_pathinfo=0` も設定して、
多数の不要な `stat()` の呼び出しを避けるべきです。
この構成を使う場合は、同時に `php.ini` ファイルで `cgi.fix_pathinfo=0` も設定して、多数の不要な `stat()` の呼び出しを避けるべきです。
また、HTTPS サーバを走らせている場合には、安全な接続であることを Yii が正しく検知できるように、
`fastcgi_param HTTPS on;` を追加しなければならないことにも注意を払ってください。
また、HTTPS サーバを走らせている場合には、安全な接続であることを Yii が正しく検知できるように、`fastcgi_param HTTPS on;`
を追加しなければならないことにも注意を払ってください。
......@@ -2,16 +2,15 @@
==============
「はじめよう」の章全体を読み通したなら、いまやあなたは、完全な Yii のアプリケーションを作成したことがある、と言うことが出来ます。
その過程で、あなたは HTML フォームを通じてユーザからデータを取得することや、データベースからデータを取得すること、また、ページ付けをしてデータを表示することなど、
必要とされることが多いいくつかの機能を実装する方法を学びました。
その過程で、あなたは HTML フォームを通じてユーザからデータを取得することや、データベースからデータを取得すること、また、ページ付けをしてデータを表示することなど、必要とされることが多いいくつかの機能を実装する方法を学びました。
また、[Gii](tool-gii.md) を使ってコードを自動的に生成する方法も学びました。
Gii をコード生成に使うと、ウェブ開発のプロセスの大部分が、いくつかのフォームに入力していくだけの簡単な仕事になります。
この節では、Yii フレームワークを使うときの生産性を更に高めるために利用できるリソースについてまとめます。
* ドキュメント
- [公式ガイド](http://www.yiiframework.com/doc-2.0/guide-README.html):
Definitive(最も確実な) という名前が示すように、このガイドは Yii がどのように動作すべきものかを正確に記述し、
- [決定版ガイド](http://www.yiiframework.com/doc-2.0/guide-README.html):
Definitive(決定的な) という名前が示すように、このガイドは Yii がどのように動作すべきものかを正確に記述し、
Yii を使用するについての全般的な手引きを提供するものです。
これは唯一最重要な Yii のチュートリアルであり、Yii のコードを少しでも書く前に読むべきものです。
- [クラスリファレンス](http://www.yiiframework.com/doc-2.0/index.html):
......@@ -21,7 +20,7 @@ Gii をコード生成に使うと、ウェブ開発のプロセスの大部分
- [Wiki の記事](http://www.yiiframework.com/wiki/?tag=yii2):
Wiki の記事は、Yii のユーザが自身の経験に基づいて書いたものです。
ほとんどの記事は、料理本のレシピのように書かれており、特定の問題を Yii を使って解決する方法を示しています。
これらの記事の品質は公式ガイドほどには良くないかもしれませんが、
これらの記事の品質は決定版ガイドほどには良くないかもしれませんが、
より広範なトピックをカバーしていることと、たいていは即座に使えるソリューションを提供してくれることにおいて有用なものです。
- [書籍](http://www.yiiframework.com/doc/)
* [エクステンション](http://www.yiiframework.com/extensions/):
......
......@@ -3,20 +3,17 @@
Yii のインストールが終ると、実際に動く Yii のアプリケーションにアクセスすることが出来るようになります。
その URL は、`http://hostname/basic/web/index.php` あるいは `http://hostname/index.php` など、設定によって異なります。
この節では、アプリケーションに組み込み済みの機能を紹介し、コードがどのように組織されているか、
そして、一般にアプリケーションがリクエストをどのように処理するかを説明します。
この節では、アプリケーションに組み込み済みの機能を紹介し、コードがどのように組織されているか、そして、一般にアプリケーションがリクエストをどのように処理するかを説明します。
> Info|情報: 話を簡単にするために、この「始めよう」のチュートリアルを通じて、
`basic/web` をウェブサーバのドキュメントルートとして設定したと仮定します。そして、
アプリケーションにアクセスするための URL は `http://hostname/index.php` またはそれに似たものになるように
設定したと仮定します。
> Info|情報: 話を簡単にするために、この「始めよう」のチュートリアルを通じて、`basic/web` をウェブサーバのドキュメントルートとして設定したと仮定します。
そして、アプリケーションにアクセスするための URL は `http://hostname/index.php` またはそれに似たものになるように設定したと仮定します。
必要に応じて、説明の中の URL を読み替えてください。
機能<a name="functionality"></a>
----
インストールされた基本的なアプリケーションは4つのページを持っています:
インストールされた基本的なアプリケーションは四つのページを持っています。
* ホームページ: `http://hostname/index.php` の URL にアクセスすると表示されます。
* 「について」のページ。
......@@ -29,21 +26,21 @@ Yii のインストールが終ると、実際に動く Yii のアプリケー
ヘッダには、異なるページ間を行き来することを可能にするメインメニューバーがあります。
ブラウザのウィンドウの下部にツールバーがあることにも気がつくはずです。
これは Yii によって提供される便利な [デバッグツールバー](tool-debugger.md) であり、ログメッセージ、
レスポンスのステータス、データベースクエリの実行状況、その他、たくさんのデバッグ情報を記録・表示するものです。
これは Yii によって提供される便利な [デバッグツールバー](tool-debugger.md)
であり、ログメッセージ、レスポンスのステータス、データベースクエリの実行状況、その他、たくさんのデバッグ情報を記録・表示するものです。
アプリケーションの構造<a name="application-structure"></a>
----------------------
アプリケーションにとって最も重要なディレクトリとファイルは (アプリケーションのルートディレクトリが `basic` だと仮定すると) 以下の通りです:
アプリケーションにとって最も重要なディレクトリとファイルは (アプリケーションのルートディレクトリが `basic` だと仮定すると) 以下の通りです
```
basic/ アプリケーションのベースパス
composer.json Composer によって使用される。パッケージ情報を記述
config/ アプリケーションその他のコンフィギュレーションを格納
console.php コンソールアプリケーションのコンフィギュレーション
web.php ウェブアプリケーションのコンフィギュレーション
config/ アプリケーションその他の構成情報を格納
console.php コンソールアプリケーションの構成情報
web.php ウェブアプリケーションの構成情報
commands/ コンソールコマンドのクラスを格納
controllers/ コントローラのクラスを格納
models/ モデルのクラスを格納
......@@ -56,7 +53,7 @@ basic/ アプリケーションのベースパス
yii Yii コンソールコマンド実行スクリプト
```
一般に、アプリケーションのファイルは二種類に分けることが出来ます: `basic/web` の下にあるファイルとその他のディレクトリの下にあるファイルです。
一般に、アプリケーションのファイルは二種類に分けることが出来ます。すなわち、`basic/web` の下にあるファイルとその他のディレクトリの下にあるファイルです。
前者は HTTP で (すなわちブラウザで) 直接にアクセスすることが出来ますが、後者は直接のアクセスは出来ませんし、許可すべきでもありません。
Yii は [モデル・ビュー・コントローラ (MVC)](http://wikipedia.org/wiki/Model-view-controller) デザインパターンを実装していますが、それが上記のディレクトリ構成にも反映されています。
......@@ -81,7 +78,7 @@ Yii は [モデル・ビュー・コントローラ (MVC)](http://wikipedia.org/
![リクエストのライフサイクル](images/request-lifecycle.png)
1. ユーザが [エントリスクリプト](structure-entry-scripts.md) `web/index.php` に対してリクエストを出します。
2. エントリスクリプトはアプリケーションの [コンフィギュレーション](concept-configurations.md) を読み出して、
2. エントリスクリプトはアプリケーションの [構成情報](concept-configurations.md) を読み出して、
リクエストを処理する [アプリケーション](structure-applications.md) のインスタンスを作成します。
3. アプリケーションは、[リクエスト](runtime-requests.md) アプリケーションコンポーネントの助力を得て、
リクエストされた [ルート](runtime-routing.md) を解決します。
......
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