Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
59b4d725
Commit
59b4d725
authored
Nov 26, 2014
by
Nobuo Kihara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs/guide-ja/intro-upgrade-from-v1.md - revised using "初期設定" and "設定情報" for…
docs/guide-ja/intro-upgrade-from-v1.md - revised using "初期設定" and "設定情報" for "configuration(s)" [ci skip]
parent
fcb60595
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
86 additions
and
84 deletions
+86
-84
intro-upgrade-from-v1.md
docs/guide-ja/intro-upgrade-from-v1.md
+86
-84
No files found.
docs/guide-ja/intro-upgrade-from-v1.md
View file @
59b4d725
...
...
@@ -5,11 +5,11 @@ Yii 繝輔Ξ繝シ繝繝ッ繝シ繧ッ縺ッ 2.0 縺ョ縺溘a縺ォ螳悟縺ォ譖ク縺咲峩縺輔l縺溘◆繧√
結果として、バージョン 1.1 からのアップグレードは、マイナーバージョン間でのアップグレードのような些細な問題ではなくなりました。
この節では、二つのバージョン間の主要な違いを説明します。
もし以前に Yii 1.1 を使ったことがなければ、あなたはこの節を飛ばして直接に "
[
始めよう
](
start-installation.md
)
" に進んでも大丈夫です。
もし以前に Yii 1.1 を使ったことがなければ、あなたはこの節を飛ばして直接に "
[
始めよう
](
start-installation.md
)
" に進んでも、問題はありません。
Yii 2.0 は、この要約でカバーされているよりも多くの新機能を導入していることに注意してください。
公式ガイド
全体を通読して全ての新機能について学習することを強く推奨します。
おそらく、以前は自分自身で開発しなければならな
かったいくつかの機能が、今で
はコアコードの一部になっていることに気付くでしょう。
決定版ガイド全
体を通読して全ての新機能について学習することを強く推奨します。
おそらく、以前は自分自身で開発する必要があった
いくつかの機能が
、今ではコアコードの一部になっていることに気付くでしょう。
インストール
...
...
@@ -18,8 +18,8 @@ Yii 2.0 縺ッ縲√%縺ョ隕∫エ〒繧ォ繝舌縺輔l縺ヲ縺k繧医j繧ょ、壹¥縺ョ譁ー讖溯
Yii 2.0 は、事実上の標準的 PHP パッケージ管理ソフトである
[
Composer
](
https://getcomposer.org/
)
を全面的に採用しています。
コアフレームワークも、エクステンションも、インストールは Composer を通じて処理されます。
[
Yii をインストールする
](
start-installation.md
)
の節を参照して、Yii 2.0 をインストールする方法を学習してください。
新しいエクステンションを作成したい場合、または既存の 1.1 エクステンションを 2.0 互換のエクステンションに変換したい場合は、
ガイドの
[
エ
クステンションを作成する
](
structure-extensions.md#creating-extensions
)
の節を参照してください。
新しいエクステンションを作成したい場合、または既存の 1.1 エクステンションを 2.0 互換のエクステンションに作り直したい場合は、ガイドの
[
エクステンションを作成する
](
structure-extensions.md#creating-extensions
)
の節を参照してください。
PHP の必要条件
...
...
@@ -27,7 +27,7 @@ PHP 縺ョ蠢ヲ∵擅莉カ
Yii 2.0 は PHP 5.4 以上を必要とします。PHP 5.4 は、Yii 1.1 によって必要とされていた PHP 5.2 に比べて、非常に大きく改良されています。
この結果として、注意を払うべき言語レベルでの違いが数多くあります。
以下は PHP に関する主要な変更点の要約です:
以下は PHP に関する主要な変更点の要約です。
-
[
名前空間
](
http://php.net/manual/ja/language.namespaces.php
)
。
-
[
無名関数
](
http://php.net/manual/ja/functions.anonymous.php
)
。
...
...
@@ -55,26 +55,26 @@ Yii 2.0 縺ァ縺ョ譛繧よ繧峨°縺ェ螟画峩縺ッ蜷榊燕遨コ髢薙菴ソ逕ィ縺ァ縺吶
コンポーネントとオブジェクト
----------------------------
Yii 2.0 は、1.1 の
`CComponent`
クラスを二つのクラスに分割しました:
[
[
yii\base\Object
]
] と
[
[yii\base\Component
]
] です。
Yii 2.0 は、1.1 の
`CComponent`
クラスを二つのクラス、すなわち、
[
[yii
\base\Object
]
] と
[
[yii\base\Component
]
] に分割しました。
[
[yii\base\Object|Object
]
] クラスは、ゲッターとセッターを通じて
[
オブジェクトプロパティ
](
concept-properties.md
)
を定義することを可能にする軽量な基底クラスです。
[
[yii\base\Component|Component
]
] クラスは
[
[yii\base\Object|Object
]
] からの拡張であり、
[
イベント
](
concept-events.md
)
と
[
ビヘイビア
](
concept-behaviors.md
)
をサポートします。
あなたのクラスがイベントやビヘイビアの機能を必要としない場合は、
[
[yii\base\Object|Object
]
] を基底クラスとして使うことを考慮すべきです。
通常、基
本的なデータ構造を表すクラスに対しては、このことが当てはまります
。
通常は、
基本的なデータ構造を表すクラスに対して、このことが当てはまります
。
オブジェクトのコンフィ
ギュレーション
----------------------
--------------
オブジェクトの初期設定
----------------------
[
[yii\base\Object|Object
]
] クラスはオブジェクトのコンフィギュレー
ションのための統一された方法を導入しています。
[
[yii\base\Object|Object
]
] の全ての派生クラスは、適切にコンフィギュ
レーションを適用されるように、コンストラクタを(それが必要な場合には)以下の方法で宣言すべきです:
[
[yii\base\Object|Object
]
] クラスはオブジェクトの初期設定のための
統一された方法
を導入しています。
[
[yii\base\Object|Object
]
] の全ての派生クラスは、コンストラクタが必
要な場合には、インスタンスが正しく初期設定されるように、コンストラクタを以下のようにして宣言しなければなりません。
```
php
class
MyClass
extends
\yii\base\Object
{
public
function
__construct
(
$param1
,
$param2
,
$config
=
[])
{
// ...
コンフィギュレーションが適用される前の初期
化処理
// ...
設定情報が適用
される前の初期化処理
parent
::
__construct
(
$config
);
}
...
...
@@ -83,16 +83,16 @@ class MyClass extends \yii\base\Object
{
parent
::
init
();
// ...
コンフィギュレーションが適用された後の初期
化処理
// ...
設定情報が適用
された後の初期化処理
}
}
```
上記にお
いて、コンストラクタは最後のパラメータとしてコンフィギュレーション配列を取らなければなりません。
コンフィギュレーション配列は「名前-値」のペアを含むものであり、コンストラクタの最後でプロパティを初期化するためのものです。
[
[yii\base\Object::init()|init()
]
] メソッドをオーバーライドして、コンフィギュレー
ションが適用された後に行うべき初期化処理を
行うことが出来ます。
上記のよ
うに、コンストラクタは最後のパラメータとして設定情報の配列を取らなければなりません。
設定情報の配列に含まれる「名前-値」のペアが、コンストラクタの最後でプロパティを初期設定します。
[
[yii\base\Object::init()|init()
]
] メソッドをオーバーライドして、設定情報が適用さ
れた後に行うべき
初期化処理を行うことが出来ます。
この規約に従うことによって、コンフィギュ
レーション配列を使って新しいオブジェクトを生成して設定することが出来るようになります:
この規約に従うことによって、設定情報の配
列を使って新しいオブジェクトを生成して初期設定することが出来るようになります。
```
php
$object
=
Yii
::
createObject
([
...
...
@@ -102,30 +102,30 @@ $object = Yii::createObject([
],
[
$param1
,
$param2
]);
```
コンフィギュレーションに関する更なる詳細は、
[
オブジェクトのコンフィギュレーション
](
concept-configurations.md
)
の節で見
ることが出来ます。
設定情報に関する詳細は、
[
オブジェクトの設定情報
](
concept-config
urations.md
)
の節で見ることが出来ます。
イベント
--------
Yii 1 では、イベントは
`on`
メソッドを定義するこ
とにより作成されました。
Yii 1 では、イベントは
`on`
メソッド (例えば、
`onBeforeSave`
) を定義することによって作成されました。
Yii 2 では、どのようなイベント名でも使うことが出来るようになりました。
[
[yii\base\Component::trigger()|trigger()
]
] メソッドをコー
ルしてイベントを発生させます:
[
[yii\base\Component::trigger()|trigger()
]
] メソッドを呼ん
でイベントを発生させます。
```
php
$event
=
new
\yii\base\Event
;
$component
->
trigger
(
$eventName
,
$event
);
```
イベントにハンドラを付けるため
には、
[
[yii\base\Component::on()|on()
]
] メソッドを使います:
イベントにハンドラをアタッチす
るためには、
[
[yii\base\Component::on()|on()
]
] メソッドを使います。
```
php
$component
->
on
(
$eventName
,
$handler
);
// ハンドラを切り
離すためには、以下のようにします:
// ハンドラをデタ
ッチするためには、以下のようにします。
// $component->off($eventName, $handler);
```
イベント関連
の機能には数多くの改良がなされました。更なる詳細は
[
イベント
](
concept-
events.md
)
の節を参照してください。
イベントの機
能には数多くの改良がなされました。詳細は
[
イベント
](
con
cept-events.md
)
の節を参照してください。
パスエイリアス
...
...
@@ -138,11 +138,11 @@ Yii 2.0 縺ッ縲√ヱ繧ケ繧ィ繧、繝ェ繧「繧ケ縺ョ菴ソ逕ィ繧偵√ヵ繧。繧、繝ォ/繝ぅ繝ャ繧ッ繝医
例えば
[
[yii\caching\FileCache::cachePath
]
] はパスエイリアスと通常のディレクトリパスの両方を受け取ることが出来ます。
パスエイリアスは、また、クラスの名前空間とも密接に関係しています。
ルートの名前空間のそれぞれ
に対してパスエイリアスを定義することが推奨されています。
そうするこ
とによって、よけいなコンフィギュレーションをしなくても、Yii のクラスオートローダを使う
ことが出来るようになります。
例えば、
`@yii`
は Y
ii のインストールディレクトリを指しているので、
`yii\web\Request`
というようなクラスをオートロードすることが出来ます。
サードパーティのライブラリ、例えば Zend フレームワークなどを使う場合には、そのフレームワークのインストールディレク
トリを
指す
`@Zend`
というパスエイリアスを定義することが出来ます。
一旦そうしてしまえば、その Zend フレームワークのライブラリ中のどんなクラスでも、同じように
オートロードすることが出来るようになります。
ルートの名前空間に対しては
、それぞれ、パスエイリアスを定義することが推奨されます。
そうすれば
、余計な初期設定をしなくても、Yii のク
ラスオートローダを使うことが出来るようになります。
例えば、
`@yii`
が Y
ii のインストールディレクトリを指しているので、
`yii\web\Request`
というようなクラスをオートロードすることが出来る訳です。
サードパーティのライブラリ、例えば Zend フレームワークなどを使う場合にも、そのフレームワークのインストールディレク
トリ
を指す
`@Zend`
というパスエイリアスを定義することが出来ます。
一旦そうしてしまえば、その Zend フレームワークのライブラリ内のどんなクラスでも、Yii か
らオートロードすることが出来るようになります。
パスエイリアスに関する詳細は
[
エイリアス
](
concept-aliases.md
)
の節を参照してください。
...
...
@@ -150,22 +150,23 @@ Yii 2.0 縺ッ縲√ヱ繧ケ繧ィ繧、繝ェ繧「繧ケ縺ョ菴ソ逕ィ繧偵√ヵ繧。繧、繝ォ/繝ぅ繝ャ繧ッ繝医
ビュー
------
Yii 2 のビューについての最も顕著な変更は、ビューの中で
`$this`
という特殊な変
数がカレントコントローラやウィジェットを指すものではなくなったということです。
Yii 2 のビューについての最も顕著な変更は、ビューの中の
`$this`
という特殊な変
数がカレントコントローラやウィジェットを指すものではなくなった、ということです。
今や
`$this`
は 2.0 で新しく導入された概念である
*ビュー*
オブジェクトを指します。
*ビュー*
オブジェクトは
[
[yii\web\View
]
] という型であり、MVC パターンのビューの部分を表すものです。
ビューにおいてコントローラやウィジェットにアクセスしたい場合は、
`$this->context`
を使うことが出来ます。
パーシャルビューを別のビューの中で表示するためには、
`$this->renderPartial()`
ではなく、
`$this->render()`
を使います。
`render`
の呼び出しは、2.0 では明示的に echo しなくてはなりません。と言うのは、
`render()`
メソッドは、直接に表示するのではなく、レンダリング結果を文字列として返すものだからです。
例えば:
パーシャルビューを別のビューの中でレンダリングするためには、
`$this->renderPartial()`
ではなく、
`$this->render()`
を使います。
さらに、
`render`
の呼び出しは、2.0 では明示的に echo しなくてはなりません。
と言うのは、
`render()`
メソッドは、レンダリング結果を返すものであり、それを直接に表示するものではないからです。
例えば、
```
php
echo
$this
->
render
(
'_item'
,
[
'item'
=>
$item
]);
```
PHP を主たるテンプレート言語として使うのに加えて、Yii
2.0 は
人気のある二つのテンプレートエンジン、Smarty と Twig に対する正式なサポートを備えています。
Prado テンプレートエンジンはもうサポートされま
せん。
これらのテンプレートエンジンを使うためには、
[
[yii\base\View::$renderers|View::$renderers
]
] プロパティをセットして、
`view`
アプリケーションコンポーネントを構成する必要があります。
PHP を主たるテンプレート言語として使う以外に、Yii 2
.0 は人
気のある二つのテンプレートエンジン、Smarty と Twig に対する正式なサポートを備えています。
Prado テンプレートエンジンはもはやサポートされ
ていません。
これらのテンプレートエンジンを使うためには、
[
[yii\base\View::$renderers|View::$renderers
]
] プロパティをセットして、
`view`
アプリケーションコンポーネントを初期設定する必要があります。
詳細は
[
テンプレートエンジン
](
tutorial-template-engines.md
)
の節を参照してください。
...
...
@@ -174,11 +175,11 @@ Prado 繝Φ繝励Ξ繝シ繝医お繝ウ繧ク繝ウ縺ッ繧ゅ≧繧オ繝昴繝医&繧後∪縺帙s縲
Yii 2.0 は
[
[yii\base\Model
]
] を 1.1 における
`CModel`
と同様な基底モデルとして使います。
`CFormModel`
というクラスは完全に廃止されました。
Yii 2 では、それの代りに、
[
yii
\base\Model
]
] を拡張してフォームモデルクラスを
作成すべきです。
Yii 2 では、それの代りに
[
yii
\base\Model
]
] を拡張して、フォームモデルクラスを作
成すべきです。
Yii 2.0 は サポートされるシナリオを宣言するための
[
[yii\base\Model::scenarios()|scenarios()
]
] というメソッドを導入しました。
Yii 2.0 は サポートされるシナリオを宣言するための
[
[yii\base\Model::scenarios()|scenarios()
]
] という新しいメソッドを導入しまし
た。
このメソッドを使って、あるシナリオの下で、どの属性が検証される必要があるか、また、どの属性が安全とみなされるか否か、などを宣言することが出来ます。
例えば:
例えば、
```
php
public
function
scenarios
()
...
...
@@ -190,7 +191,7 @@ public function scenarios()
}
```
上記では二つのシナリオが宣言されていま
す:
`backend`
と
`frontend`
です。
上記では二つのシナリオ、すなわち、
`b
ackend`
と
`frontend`
が宣言されています。
`backend`
シナリオでは、
`email`
と
`role`
の属性が両方とも安全であり、一括代入が可能です。
`frontend`
シナリオでは、
`email`
は一括代入が可能ですが、
`role`
は不可能です。
`email`
と
`role`
は、両方とも、規則を使って検証されなければなりません。
...
...
@@ -198,7 +199,7 @@ public function scenarios()
[
[yii\base\Model::rules()|rules()
]
] メソッドが Yii 1.1 同様に検証規則を宣言するために使われます。
[
[yii\base\Model::scenarios()|scenarios()
]
] が導入されたことにより、
`unsafe`
バリデータが無くなったことに注意してください。
ほとんどの場合、
[
[yii
\base\Model::rules()|rules()
]
] メソッドが在り得るシナリオを十分に既定しているなら、そして
`uns
afe`
な属性を宣言する必要が無いなら、
[
[yii\base\Model::scenarios()|scenarios()
]
] をオーバーライドする必要はありません。
ほとんどの場合、すなわち、
[
[yii\base\Model::rules()|rules()
]
] メソッドが存在しうるシナリオを完全に規定しているなら、そして
`unsafe`
な属性を宣言する必要が無いなら、
[
[yii\base\Model::scenarios()|scenarios()
]
] をオーバーライドする必要はありません。
モデルについてさらに詳細を学習するために、
[
モデル
](
structure-models.md
)
の節を参照してください。
...
...
@@ -210,7 +211,7 @@ Yii 2.0 縺ッ [[yii\web\Controller]] 繧貞渕蠎輔繧ウ繝ウ繝医Ο繝シ繝ゥ繧ッ繝ゥ繧ケ縺ィ縺
これは Yii 1.1 における
`CController`
と同様なクラスです。
[
[yii\base\Action
]
] がアクションクラスの基底クラスです。
これらに関する変更があなたのコードに及ぼす影響で最も明らかなもの
は、コントローラのアクションは表示
したいコンテンツを、エコーするのでなく、返さなければならない、ということです。
これらに関する変更があなたのコードに及ぼす最も顕著な影響は、コン
トローラのアクションは表示
したいコンテンツを、エコーするのでなく、返さなければならない、ということです。
```
php
public
function
actionView
(
$id
)
...
...
@@ -224,7 +225,7 @@ public function actionView($id)
}
```
コントローラに関する更なる詳細につい
ては
[
コント
ローラ
](
structure-controllers.md
)
の節を参照してください。
コントローラに関する詳細については
[
コントローラ
](
structure-controllers.md
)
の節を参照してください。
ウィジェット
...
...
@@ -233,7 +234,7 @@ public function actionView($id)
Yii 2.0 は
[
[yii\base\Widget
]
] を基底のウィジェットクラスとして使用します。これは Yii 1.1 の
`CWidget`
と同様なクラスです。
いろんな IDE においてフレームワークに対するより良いサポートを得るために、Yii 2.0 はウィジェットを使うための新しい構文を導入しました。
スタティックなメソッド
[
[yii\base\Widget::begin()|begin()
]
]、
[
[yii\base\Widget::end()|end()
]
]、そして
[
[yii\base\Widget::widget()|widget()
]
] が導入されました。以下のようにして使います:
スタティックなメソッド
[
[yii\base\Widget::begin()|begin()
]
]、
[
[yii\base\Widget::end()|end()
]
]、そして
[
[yii\base\Widget::widget()|widget()
]
] が導入されました。以下のようにして使います。
```
php
use
yii\widgets\Menu
;
...
...
@@ -251,7 +252,7 @@ $form = ActiveForm::begin([
ActiveForm
::
end
();
```
更なる詳細につ
いては
[
ウィジェット
](
structure-widgets.md
)
の節を参照してください。
詳
細については
[
ウィジェット
](
structure-widgets.md
)
の節を参照してください。
テーマ
...
...
@@ -265,25 +266,25 @@ ActiveForm::end();
コントローラやウィジェットのコンテキストの外で表示されるビューに対してすら、適用できます。
また、
`CThemeManager`
コンポーネントはもうありません。
その代りに、
`theme`
は
`view`
アプリケーションコンポーネントのコンフィギュレーション可能
なプロパティになりました。
その代りに、
`theme`
は
`view`
アプリケーションコンポーネントの設定可能なプロパティになり
ました。
更なる詳細につ
いては
[
テーマ
](
output-theming.md
)
の節を参照してください。
詳
細については
[
テーマ
](
output-theming.md
)
の節を参照してください。
コンソールアプリケーション
--------------------------
コンソールアプリケーションは、ウェブアプリケーションと同じように、コントローラとして組織されるようになりました。
1.
1 における
`CConsoleCommand`
と同様に、コンソールコントローラは
[
[yii\console\Controller
]
] から派生させます。
1.
1 における
`CConsoleCommand`
と同様に、コンソールコントローラは
[
[yii\console\Controller
]
] を拡張したものでなければなりませ
ん。
コンソールコマンドを走らせるためには、
`yii <route>`
という構文を使います。
ここで
`<route>`
はコントローラのルート(例えば
`sitem
ap/index`
)を意味します。
ここで
`<route>`
はコントローラのルート (例えば
`site
map/index`
) を表します。
追加の無名の引数は、対応するコントローラのアクションメソッドに引数として渡されます。
一方、名前付きの引数は、
[
[yii\console\Controller::options()
]
] での宣言に従って解析されます。
Yii 2.0 はコメントブロックからコマンドのヘルプ情報を自動的に生成する機能をサポートしています。
更なる詳細につ
いては
[
コンソールコマンド
](
tutorial-console.md
)
の節を参照してください。
詳
細については
[
コンソールコマンド
](
tutorial-console.md
)
の節を参照してください。
国際化
...
...
@@ -292,17 +293,17 @@ Yii 2.0 縺ッ繧ウ繝。繝ウ繝医ヶ繝ュ繝け縺九i繧ウ繝槭Φ繝峨繝倥Ν繝玲ュ蝣ア繧定蜍
Yii 2.0 は
[
PECL intl PHP モジュール
](
http://pecl.php.net/package/intl
)
に賛同して、内蔵の日付フォーマッタと数字フォーマッタの部品を取り除きました。
メッセージは
`i18n`
アプリケーションコンポーネント経由で翻訳されるようになりました。
このコンポーネントはメッセ
ージソースのセットを管理するもので、メッセージのカテゴリに基づいて異なるメッセージソースを使うことを許容します。
このコンポーネントは一連の
メッセージソースを管理するもので、メッセージのカテゴリに基づいて異なるメッセージソースを使うことを許容するものです。
更なる詳細につ
いては
[
国際化
](
tutorial-i18n.md
)
の節を参照してください。
詳
細については
[
国際化
](
tutorial-i18n.md
)
の節を参照してください。
アクションフィルタ
------------------
新しいアクションフィルターはビヘイビアによっ
て実
装されています。
新しいカスタムフィルターを定義するため
には
、
[
[yii\base\ActionFilter
]
] を拡張します。
フィルターを使
うためには、そのフィルタークラスをビヘイビアとしてコン
トローラにアタッチします。
新しいアクションフィルタはビヘイビアによって実装されています。
新しいカスタムフィルタを定義するためには、
[
[yii\base\ActionFilter
]
] を拡張します。
フィルタを使う
ためには、そのフィルタクラスをビヘイビアとして
コントローラにアタッチします。
例えば、
[
[yii\filters\AccessControl
]
] を使うためには、コントローラに次のコードを書くことになります:
```
php
...
...
@@ -319,7 +320,7 @@ public function behaviors()
}
```
更なる詳細につ
いては
[
フィルタ
](
structure-filters.md
)
の節を参照してください。
詳
細については
[
フィルタ
](
structure-filters.md
)
の節を参照してください。
アセット
...
...
@@ -329,16 +330,16 @@ Yii 2.0 縺ッ縲*繧「繧サ繝ヨ繝舌Φ繝峨Ν* 縺ィ蜻シ縺ー繧後k譁ー縺励>讎ょソオ繧貞ー主
アセットバンドルは、あるディレクトリの下に集められた一群のアセットファイル (例えば、JavaScript ファイル、CSS ファイル、イメージファイルなど) です。
それぞれのアセットバンドルは
[
[yii\web\AssetBundle
]
] を拡張したクラスとして表されます。
アセットバンドルを
[
[yii\web\AssetBundle::register()
]
] を通じて登録することによって、そのバンドルに含まれるアセットにウェブでアクセスできるようになります。
Yii 1 とは異なり、バンドルを登録したページは、そのバンドルで規定された JavaScript
と CSS ファイルを自動的に参照するようになります。
アセットバンドルを
[
[yii\web\AssetBundle::register()
]
] を通じて登録することによって、そのバンドルに含まれるアセットにウェブ経由でアクセスできるようになります。
Yii 1 とは異なり、バンドルを登録したページは、そのバンドルで指定されている JavaScrip
t と CSS ファイルへの参照を自動的に含むようになります。
更なる詳細については
[
アセットを管理する
](
structure-a
ssets.md
)
の節を参照してください。
詳細については
[
アセット
](
struct
ure-assets.md
)
の節を参照してください。
ヘルパー
------
--
ヘルパ
------
Yii 2.0 はよく使われるスタティックなヘルパークラスを数多く導
入しました。それには以下のものが含まれます;
Yii 2.0 はよく使われるスタティックなヘルパクラスを数多く導入
しました。それには以下のものが含まれます。
*
[
[yii\helpers\Html
]
]
*
[
[yii\helpers\ArrayHelper
]
]
...
...
@@ -346,37 +347,37 @@ Yii 2.0 縺ッ繧医¥菴ソ繧上l繧九せ繧ソ繝ぅ繝け縺ェ繝倥Ν繝代繧ッ繝ゥ繧ケ繧呈焚螟
*
[
[yii\helpers\FileHelper
]
]
*
[
[yii\helpers\Json
]
]
更なる詳細については
[
ヘルパー概要
](
helpe
r-overview.md
)
の節を参照してください。
詳細については、ヘルパの
[
概要
](
he
lper-overview.md
)
の節を参照してください。
フォーム
--------
Yii 2.0 は
[
[yii\widgets\ActiveForm
]
] を使ってフォームを作成する際に
*フィールド*
の概念を導入しました。
Yii 2.0 は
[
[yii\widgets\ActiveForm
]
] を使ってフォームを作成する際に使用する
*フィール
ド*
の概念を
導入しました。
フィールドは、ラベル、インプット、エラーメッセージ および/または ヒントテキストを含むコンテナです。
フィールドは
[
[yii\widgets\ActiveField|ActiveField
]
] のオブジェクトとして表現されます。
フィールドを使うことによって、以前よりも綺麗にフォームを作成するこ
とが出来るようになりました:
フィールドを使うことによって、以前よりもすっきりとフォームを作成す
ることが出来るようになりました。
```
php
<?php
$form
=
yii\widgets\ActiveForm
::
begin
();
?>
<?=
$form
->
field
(
$model
,
'username'
)
?>
<?=
$form
->
field
(
$model
,
'password'
)
->
passwordInput
()
?>
<div
class=
"form-group"
>
<?=
Html
::
submitButton
(
'
Login
'
)
?>
<?=
Html
::
submitButton
(
'
ログイン'
)
?
>
</div>
<?php
yii\widgets\ActiveForm
::
end
();
?>
```
更なる詳細につ
いては
[
フォームを作成する
](
input-forms.md
)
の節を参照してください。
詳
細については
[
フォームを作成する
](
input-forms.md
)
の節を参照してください。
クエリビルダ
------------
1.
1 においては、クエリビルダは
`C
DbComm
and`
、
`CDbCriteria`
、
`CDbCommandBuilder`
など、いくつかのクラスに散らばっていました。
1.
1 においては、クエリの構築が
`C
DbComma
nd`
、
`CDbCriteria`
、
`CDbCommandBuilder`
など、いくつかのクラスに散らばっていました。
Yii 2.0 は DB クエリを
[
[yii\db\Query|Query
]
] オブジェクトの形で表現します。
このオブジェクトが舞台裏で
[
[yii\db\QueryBuilder|QueryBuilder
]
] の助けを得て SQL 文に変換されます。
例えば:
例えば、
```
php
$query
=
new
\yii\db\Query
();
...
...
@@ -391,7 +392,7 @@ $rows = $command->queryAll();
何より良いのは、このようなクエリ構築メソッドが
[
アクティブレコード
](
db-active-record.md
)
を扱う時にも使える、ということです。
更なる詳細につ
いては
[
クエリビルダ
](
db-query-builder.md
)
の節を参照してください。
詳
細については
[
クエリビルダ
](
db-query-builder.md
)
の節を参照してください。
アクティブレコード
...
...
@@ -402,20 +403,20 @@ Yii 2.0 縺ッ [繧「繧ッ繝ぅ繝悶Ξ繧ウ繝シ繝云(db-active-record.md) 縺ォ謨ー螟壹¥縺ョ螟
1.
1 の
`CDbCriteria`
クラスは Yii 2 では
[
[yii\db\ActiveQuery
]
] に置き換えられました。
このクラスは
[
[yii\db\Query
]
] を拡張したものであり、従って全てのクエリ構築メソッドを継承します。
以下のように、
[
[yii\db\ActiveRecord::find()
]
] を呼んでクエリの構築を開始します:
以下のように、
[
[yii\db\ActiveRecord::find()
]
] を呼んでクエリの構築を開始します。
```
php
// 全てのアクティブな顧客を読み出し、ID によって並べる:
// 全てのアクティブな顧客を読み出し、ID によって並べる
$customers
=
Customer
::
find
()
->
where
([
'status'
=>
$active
])
->
orderBy
(
'id'
)
->
all
();
```
リレーションを宣言するためには、単純に
[
[yii
\db\ActiveQuery|ActiveQuery
]
] オブジェクトを返すゲッターメソッドを定義します。
リレーションを宣言するために必要なことは、
[
[yi
i\db\ActiveQuery|ActiveQuery
]
] オブジェクトを返すゲッターメソッドを定義するだけのことです。
ゲッターによって定義されたプロパティの名前がリレーションの名前を表します。
例えば、以下のコードは
`orders`
リレーションを宣言するものです
(1.1 では
`relations()`
という一個の中枢でリレーションを宣言しなければなりませんでした):
(1.1 では
`relations()`
という一個の中枢でリレーションを宣言しなければなりませんでした)。
```
php
class
Customer
extends
\yii\db\ActiveRecord
...
...
@@ -428,7 +429,7 @@ class Customer extends \yii\db\ActiveRecord
```
こうすることで、
`$customer->orders`
という構文によって関連テーブルにある顧客のオーダにアクセスすることが出来るようになります。
また、下記のコードを用いて、カスタマイズしたクエリ条件によるオンザフライのリレーショナルクエリを実行することも出来ます:
また、下記のコードを用いて、カスタマイズしたクエリ条件によるオンザフライのリレーショナルクエリを実行することも出来ます。
```
php
$orders
=
$customer
->
getOrders
()
->
andWhere
(
'status=1'
)
->
all
();
...
...
@@ -436,19 +437,19 @@ $orders = $customer->getOrders()->andWhere('status=1')->all();
リレーションをイーガーロードするとき、Yii 2.0 は 1.1 とは異なる動きをします。
具体的に言うと、1.1 では JOIN クエリが生成されて、主レコードと関連レコードの両方がセレクトされていました。
Yii 2.0 では、JOIN を使わずに二つの SQL 文が実行されます:
第
一の SQL 文が主たるレコードを返し、第二の SQL 文は主レコードのプライマリキーを使うフィルタリングによって関連レコードを返します。
Yii 2.0 では、JOIN を使わずに二つの SQL 文が実行されます。
すなわち、第一の
SQL 文が主たるレコードを返し、第二の SQL 文は主レコードのプライマリキーを使うフィルタリングによって関連レコードを返します。
多数のレコードを返すクエリを構築するときは、
[
[yii\db\ActiveRecord|ActiveRecord
]
] を返す代りに、
[
[yii\db\ActiveQuery::asArray()|asArray()
]
] メソッドをチェインして、クエリ結果を配列として返すことが出来ます。
こうすると、レコードの数が多い場合は、必要な CPU 時間とメモリを著しく削減することが出来ます。
例えば:
例えば、
```
php
$customers
=
Customer
::
find
()
->
asArray
()
->
all
();
```
もう一つの変更点は、属性のデフォルト値を public なプロパティによって定義することは出来なくなった、ということです。
デフォルト値が必要な場合は、アクティブレコードクラスの
`init`
メソッドの中で設定すべきです。
デフォルト値が必要な場合は、アクティブレコードクラスの
`init`
メソッドの中で設定しなければなりません。
```
php
public
function
init
()
...
...
@@ -505,7 +506,7 @@ User 縺ィ IdentityInterface
そして
`CUserIdentity`
クラスはもうありません。代りに、使い方がもっと単純な
[
[yii\web\IdentityInterface
]
] を実装すべきです。
アドバンストアプリケーションテンプレートがそういう例を提供しています。
更なる詳細は
[
認証
](
security-authentication.md
)
、
[
権限
](
security-authorization.md
)
、そして
[
高度なアプリケーションのテクニック
](
tutorial-advanced-app.m
d
)
の節を参照してください。
詳細は
[
認証
](
security-authentication.md
)
、
[
権限
](
security-authorization.md
)
、そして
[
アドバンストアプリケーションテンプレート
](
tutorial-advanced-a
pp.md
)
の節を参照してください。
URL 管理
...
...
@@ -513,8 +514,8 @@ URL 邂。逅
Yii 2 の URL 管理は 1.1 のそれと似たようなものです。
主な機能強化は、URL 管理がオプションのパラメータをサポートするようになったことです。
例えば、下記のような規則を宣言した場合、
`post/popul
ar`
と
`post/1/popular`
の両方にマッチするようになります。
1.
1 では、これ
と同じ目的を達成する
ためには、二つの規則を使う必要がありました。
例えば、下記のような規則を宣言した場合に、
`post/popu
lar`
と
`post/1/popular`
の両方に合致するようになります。
1.
1 では、同じ
目的を達成
するためには、二つの規則を使う必要がありました。
```
php
[
...
...
@@ -524,12 +525,13 @@ Yii 2 縺ョ URL 邂。逅 1.1 縺ョ縺昴l縺ィ莨シ縺溘h縺↑繧ゅ縺ァ縺吶
]
```
更なる詳細については
[
URL 管理
](
runtime-url-handling.md
)
の節を参照してください。
詳細については
[
ルーティングと URL 生成
](
runtime-routing.md
)
の節
を参照してください。
Yii 1.1 と 2.x を一緒に使う
---------------------------
Yii 2.0 と一緒に使いたい Yii 1.1 のレガシーコードを持っている場合は、
[
Yii 1.1 と 2.x を一緒に使う
](
tutorial-yii-integration.md
)
の節を参照してください。
[
サードパーティのコードを扱う
](
tutorial-yii-integration.md
)
の節の
[
Yii 2 を Yii 1 と一緒に使う
](
tutorial-yii-integration.md#using-both-yii2-yii1
)
の項を参照してください。
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment