テンプレート Part Ⅲ

動的プロパティタグ

動的プロパティタグは、コンポーネントプロパティに適用されるという点以外は、動的コンテンツタグに非常に類似しています。動的プロパティタグの目的は、より多用途のコンポーネントプロパティコンフィグを使えるようにすることです。 PHPコードでも動的プロパティタグで実現できることを実現できるので、動的プロパティタグをかならずしも使用する必要はないことを覚えて置いてください。しかしながら、同様のタスクを実現するにあたって、動的プロパティタグを使うことは、ずっとより多くの利便性があります。 動的なプロパティタグの基本的な用法は次の通りです。
<com:ComponentType PropertyName=DynamicPropertyTag ...>
 body content
</com:ComponentType>
DynamicPropertyTag については、見易さを確保するために、'・・・’ や”・・・”で囲ってもかまいません。
動的コンテンツタグのように、表現タグ、データ渡しタグ、パラメータタグ、アセットタグ、およびローカル化タグがあります。(ステートメントタグはありません。)

表現タグ

テンプレートコントロールがレンダリングのプレ段階にある時に、表現タグは、評価されるPHP表現を表しています。表現評価結果は対応するコンポーネントプロパティに割り当てられます。 表現タグのフォーマットは次の通りです。
<%= PhpExpression %>
この表現において、$thisはテンプレートを所有しているコントロールを参照します。 以下の例は、TLabelコントロールを指定しているもので、そのコントロールのテキストプロパティが、現在のページタイトルを初期設定しているものです。
<com:TLabel Text=<%= $this->Page->Title %> />

データ渡しタグ

データ渡しタグは表現タグと似ていますが、それらがコントロールプロパティによってのみ使われることができるという点、その表現が、コンポーネントタグによって表されているコントロールがdataBind()関数によって呼び出されるときにだけ実行されるという点は、表現タグと異なります。この表現において、$this はテンプレートを所有しているコントロールを参照します。データ渡しタグはすべてのコンポーネントに適用できるというわけではありません。それらはコントロールに使うことができるだけです。
データ渡しタグのフォーマットは次の通りです。
<%# PhpExpression %>
v3.0.2以降、表現タグとデータ渡しタグは静的ストリングの中に埋め込むことができます。例えば、テンプレート中に以下の様に書くことができます。
sample.page
TempleteSample2.page
<com:TLabel>
 <prop:Text>
   Today is<%= date('F d, Y',time()) %>.
   The page class is <%= get_class($this) %>.
 </prop:Text>
</com:TLabel>
sample
これに以下のような最低限のクラスファイル(TempleteSample.php)を加えるとこんな感じに表示されます。
<?php
 class TempleteSample2 extends TPage
 {
 }
?>
従来であれば、同様の効果を出そうとするために、ストリングを連結した単式を使う必要がありました。

パラメータータグ

パラメータタグは、アプリケーションパラメータ値をその対応するコンポーネントプロパティに割り当てるために使われます。 パラメータタグのフォーマットは次の通りです。
<%$ ParameterName %>
注、アプリケーションパラメータは通常、アプリケーションコンフィグたはページディレクトリコンフィグの中で定義されます。 そのパラメーターは、テンプレートがインスタンス化される時に、実行されます。

アセットタグ

アセットタグは、プライベート・ファイルを表示し、その一致するURLをコンポーネントプロパティに割り当てるために使われます。例えば、あなたが、Webがアクセス可能でないイメージファイルを持っていて、あなたが、それをエンドユーザーに見えさせたいならば、あなたは、このファイルを公表し、そのイメージを取り出すことができるようなURLをエンドユーザーに示すために、アセットタグを使うことができます。テンプレートがインスタンス化される時に、アセットタグは実行されます。
アセットタグの例は、以下のとおりです。
<%~ LocalFileName %>
ここで、LocalFileNameは、現在のテンプレートファイルを含んでいるディレクトリと関連しているファイルパスを参照しています。ファイルパスは1つのファイルまたはディレクトリを指定できます。もしディレクトリーの場合には、ディレクトリ内のすべてのコンテンツがエンドユーザーにアクセス可能な状態となります。
エンドユーザーへ公開するためにアセットタグを使用しているときには、それが見られたくないファイルではないか、最新の注意を払ってください。
sample
アセットタグを使ってイメージファイルを表示します。表示するファイルを/protected ディレクトリー下に /image ディレクトリーを設置し、中に"sample2.jpg"という名前のイメージファイルをおきます。
sample のソース
(TempleteSample1.page を以下の通り記述し、/protected ディレクトリ下へ設置します。)
 <h1>Asset Tags</h1>
 <img src="<%~ image/sample2.jpg %>">
sample実行結果
こちら

ローカル化タグ

ローカル化タグはローカル化されたテキストを表しています。 そのフォーマットは、以下とおりです。
<%[string]%>
ここで string は、 エンドユーザーの選択している言語にあわせて、各々違う言語へ翻訳されます。ローカルタグは、テンプレートがインスタント化するときに実行されます。ローカル化タグは、実際には Prado::localize(string)のショートカットです。