Yii では開発者が好みのテンプレート (例: Prado や Smarty など) を使ってビューを書くことができます。 これは viewRenderer を作成して、コンポーネントに追加することで可能になります。 ビューレンダラは CBaseController::renderFile の呼び出しを横取りして、ビューファイルをカスタマイズされたテンプレート文法でコンパイルし、結果を表示します。
情報: カスタマイズされたテンプレート文法を利用するのは、再利用される可能性が低いビューを書く場合に限ることをおすすめします。 そうしないと、ビューを再利用しようとする人に対して、カスタマイズされたテンプレート文法の使用を強制することになります。
以下に CPradoViewRenderer を使う方法を示します。 このビューレンダラを使うと、ビューを Prado framework と似た文法で書くことができます。 独自のレンダラを開発したい場合は、 CPradoViewRenderer は良い参考になるでしょう。
CPradoViewRenderer
を使う ¶CPradoViewRenderer を使うには、以下のようにアプリケーション設定を変更する必要があります。
return array(
'components'=>array(
......,
'viewRenderer'=>array(
'class'=>'CPradoViewRenderer',
),
),
);
デフォルトでは、CPradoViewRenderer はビューファイルをコンパイルした結果を runtime ディレクトリ以下に保存します。 ビューテンプレートが変更された場合のみ、コンパイルされたファイルが再生成されるので、CPradoViewRenderer を使ってもパフォーマンスの低下はほんの少しです。
ヒント: CPradoViewRenderer では、主にビューの記述を簡単かつすばやくできる新しいタグを導入しますが、それらを使わずに PHP コードをそのまま書くことも可能です。
以下では CPradoViewRenderer で利用可能なテンプレートタグを紹介します。
ショート PHP タグは、ビューで PHP コードを書く際のショートカットです。
<%= expression %>
という出力タグは、<?php echo expression ?>
と同じ意味です。
<% statement %>
という宣言タグは、<?php statement ?>
と同じ意味です。
たとえば、
<%= CHtml::textField($name,'value'); %>
<% foreach($models as $model): %>
というタグは、
echo CHtml::textField($name,'value'); foreach($models as $model):
と同じです。
コンポーネントタグは widget をビューに挿入する際に利用されます。 以下のような文法で利用します。
<com:WidgetClass property1=value1 property2=value2 ...>
// ウィジェットの body content
</com:WidgetClass>
// body content なしのウィジェット
<com:WidgetClass property1=value1 property2=value2 .../>
ここで、WidgetClass
はウィジェットクラスの名前、またはクラスの パスエイリアス を指定します。
プロパティの初期値は、引用符号で囲まれた文字列か、中括弧で囲まれた PHP コードで指定することが可能です。
例えば、
<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />
この内容は、
$this->widget('CCaptcha', array( 'captchaAction'=>'captcha', 'showRefreshButton'=>false));
このように翻訳されます。
注意:
showRefreshButton
の値が、"false"
ではなく、{false}
と指定されていることに注意してください。 なぜなら、前者の書き方では単なる文字列を意味し、ブール値ではなくなってしまうからです。
キャッシュタグは フラグメントキャッシュ を利用するためのショートカットです。 以下のように書きます。
<cache:fragmentID property1=value1 property2=value2 ...>
// キャッシュされる内容
</cache:fragmentID >
fragmentID
がキャッシュされる内容を一意に決定する識別子です。
プロパティと値のペアでキャッシュの設定を指定します。
例えば、
<cache:profile duration={3600}>
// ユーザプロファイル情報
</cache:profile >
この記述は、
if($this->beginCache('profile', array('duration'=>3600))): // ユーザプロファイル情報 $this->endCache(); endif;
このように翻訳されます。
キャッシュタグと同じように、クリップタグはビューファイルで CBaseController::beginClip と CBaseController::endClip を呼ぶためのショートカットです。 以下のように記述します。
<clip:clipID>
// クリップされる内容
</clip:clipID >
clipID
がクリップされる内容を一意に決定する識別子です。
$this->beginClip('clipID'); // クリップされる内容 $this->endClip();
コメントタグはビューで開発者のみが読めるコメントを書くために使われます。 コメントタグはビューがユーザに表示されたときにはなくなっています。 以下のように記述します。
<!---
ビューコメントは取り除かれます
--->
バージョン 1.1.2 以降、何らかの代替テンプレート文法を通常の PHP 文法と併用することが可能になりました。
そうするためには、インストールされているビューレンダラの CViewRenderer::fileExtension プロパティを .php
以外の値に構成する必要があります。
例えば、プロパティを .tpl
と設定すると、.tpl
で終るすべてのビューファイルがインストールされたビューレンダラを使って表示され、一方、.php
で終るその他のすべてのビューファイルは通常の PHP ビュースクリプトとして取り扱われることになります。
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.