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