ビューは主にユーザインターフェースの要素によって構成される PHP スクリプトです。 ビューには PHP 文を含める事ができますが、その PHP 文でデータモデルを変更すべきではなく、 また、比較的シンプルなものに留めておくことを推奨します。 ロジック部とプレゼンテーション部の分離の精神に基づいて、ロジックの大部分は ビューではなく、コントローラかモデルに置くべきです。
ビューは、描画の際にビュースクリプトファイルを識別するために使われる名前を持ちます。
ビューの名前はビュースクリプトファイル名と同じです。
たとえば、ビュー edit は edit.php という名前のビュースクリプトファイルを参照します。
ビューを描画するためには、ビュー名を引数にして CController::render() をコールします。
このメソッドは protected/views/ControllerID ディレクトリ下にある、対応するビューファイルを探します。
ビュースクリプト中では、$this を使用してコントローラインスタンスへのアクセスが可能です。
従って、ビューの中では $this->propertyName という形でコントローラのプロパティを参照できます。
さらに、データをビューに渡すために、次の方法を使用することができます:
$this->render('edit', array( 'var1'=>$value1, 'var2'=>$value2, ));
上記では、render() メソッドは 2 番目の配列のパラメータを変数へ展開します。
その結果、ビュースクリプト内では、ローカル変数 $var1 と $var2 としてアクセスできます。
レイアウトは、ビューを装飾するために使用される特別なビューで、 通常、いくつかのビューに共通しているユーザインターフェースの部分を含みます。 たとえば、以下のように、レイアウトはヘッダーとフッターを含み、その間に ビューを埋め込むことが出来ます。
......header here...... <?php echo $content; ......footer here......
ここで、$content がビューのレンダリング結果を格納するものです。
レイアウトは render() をコールするとき、
暗黙に適用されます。
デフォルトでは、ビュースクリプト protected/views/layouts/main.php が
レイアウトとして使用されます。これは、 CWebApplication::layout か
CController::layout のいずれかを変更することで、カスタマイズ可能です。
レイアウトを適用せずにビューの描画を行うには、
代わりに renderPartial() をコールします。
ウィジェットは、CWidget か CWidget の子クラスのインスタンスです。 これは、主に表示的な用途を持つコンポーネントです。 ウィジェットは、通常、複雑ではあっても自己完結したユーザインターフェースを生成するために ビュースクリプトに埋め込まれます。たとえば、カレンダーウィジェットは複雑なカレンダー ユーザインターフェースを表示させるために使用出来ます。 ウィジェットは、ユーザインターフェースコードの再利用性を高めてくれます。
ウィジェットを使うには、ビュースクリプト内で以下のようにします:
$this->beginWidget('path.to.WidgetClass'); ...ウィジェットによりキャプチャされる本文(body content)... <?php $this->endWidget();
または
$this->widget('path.to.WidgetClass');
後の方法は、ウィジェットが本文(body content)を必要としないときに用いられます。
ウィジェットを構成して挙動をカスタマイズするためには、 CBaseController::beginWidget もしくはCBaseController::widget を 呼び出す際に、プロパティの初期値を設定します。 たとえば、CMaskedTextField ウィジェットを使用する際に、 使用されるマスクを指定したい場合は、下記のように、プロパティの初期値を 配列として渡します。ここで、配列のキーはプロパティ名、配列の値は対応する ウィジェットプロパティの初期値です。
$this->widget('CMaskedTextField',array( 'mask'=>'99/99/9999' ));
新しいウィジェットを定義するには、CWidget を継承し、 init() と run() メソッドを上書きします:
class MyWidget extends CWidget { public function init() { // this method is called by CController::beginWidget() } public function run() { // this method is called by CController::endWidget() } }
コントローラのように、ウィジェットはそれ自身のビューを持つことができます。
デフォルトでは、ウィジェットのビューファイルは、
そのビューファイルのあるディレクトリの views サブディレクトリに位置します。
コントローラと同じように、ビューは CWidget::render() を呼び出すことで
描画させることができます。
唯一の違いは、ウィジェットビューにはレイアウトを適用できないことです。
さらにビュー中の$thisはコントローラインスタンスを参照するのではなく、このウィジェットインスタンスを参照します。
システムビューは、Yii によってエラーやロギング情報を表示するために 使用されるビューです。たとえば、存在しないコントローラやアクションが ユーザによりリクエストされた場合、Yii はそのエラーを説明する例外を投げ、 特定のシステムビューを使用して、その例外を表示します。
システムビュー名は、いくつかのルールに基づきます。errorXXX のような名前は、
エラーコード XXX の CHttpException エラー表示のためのビューを指します。
たとえば、もし CHttpException がエラーコード404により発生した場合、
error404 ビューが表示されます。
Yii は framework/views 以下に、1セットのデフォルトシステムビューを提供します。
システムビューをカスタマイズしたい場合、 protected/views/system 以下に、
同じファイル名のビューファイルを作成してください。
Be the first person to leave a comment
Please login to leave your comment.