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}
と指定されていることに注意してください。 なぜなら、後者の書き方では単なる文字列を意味し、ブール値ではなくなってしまうからです。
キャッシュタグはfragment cachingを利用するためのショートカットです。 以下のように書きます。
<cache:fragmentID property1=value1 property2=value2 ...>
// キャッシュされる内容
</cache:fragmentID >
fragmentID
がキャッシュされる内容を一意に決定する識別子です。
プロパティと値のペアでキャッシュの設定を指定します。
例えば、
<cache:profile duration={3600}>
// ユーザプロファイル情報
</cache:profile >
この記述は、
if($this->cache('profile', array('duration'=>3600))): // ユーザプロファイル情報 $this->endCache(); endif;
このように翻訳されます。
キャッシュタグと同じように、クリップタグはビューファイルで CBaseController::beginClip と CBaseController::endClip を呼ぶためのショートカットです。 以下のように記述します。
<clip:clipID>
// クリップされる内容
</clip:clipID >
clipID
がクリップされる内容を一意に決定する識別子です。
$this->beginClip('clipID'); // クリップされる内容 $this->endClip();
コメントタグはビューで開発者のみが読めるコメントを書くために使われます。 コメントタグはビューがユーザに表示されたときにはなくなっています。 以下のように記述します。
<!---
ビューコメントは取り除かれます
--->
Signup or Login in order to comment.