テンプレート構文
基本的な埋め込み記法
val
コントロールコードを削除し、htmlspecialchars でサニタイズ、nl2br で改行コードを <br> に変換の上、埋め込みます。
{val data}
rval
コントロールコードを削除し、埋め込みます。
{rval data}
@
前処理をなにもせずに、そのまま埋め込みます。
{@data}
cdata
コントロールコードを削除し、CDATA として埋め込みます。
{cdata data}
nval
コントロールコードを削除し、int型に変換して、3桁ごとにカンマ区切りにした上で埋め込みます。
{nval data}
tval
コントロールコードを削除し、htmlspecialchars でサニタイズして埋め込みます。
改行を <br> に変換しないので、主に、<textarea> で利用します。
{tval data}
dval
タイムスタンプとして解析し、日付表現に変換の上、埋め込みます。
{dval data}
hval
タイムスタンプとして解析し、日時表現に変換の上、埋め込みます。
{dval data}
jval
コントロールコードを削除し、JSON形式に変換の上、埋め込みます。
{jval data}
配列制御
each 〜 /each
指定したデータが配列の場合、配列として繰り返します。
配列ではない場合は、繰り返しません。
階層のネストも可能です。
データへのアクセスは、階層を / で区切って指示します。
<!--{each list}-->
{val list/name}
<!--{each list/text}-->
{val list/text/body}
<!--{/each}-->
<!--{/each}-->
$this->pageCanvas->html['list'] = [
[ 'name' => 'name1' ],
[ 'name' => 'name2' ],
[ 'name' => 'name3',
'text' => [
['body' => 'body1'],
['body' => 'body2'],
['body' => 'body3'],
]
]
];
配列に対するループインデックスへのアクセス
ループインデックスへのアクセスには、# を使います。
<!--{each list}-->
{val #list} {val list/name}
<!--{each list/text}-->
{val #list/text} {val list/text/body}
<!--{/each}-->
<!--{/each}-->
配列に対する値への直接アクセス
値への直接アクセスには、* を使います。
<!--{each list}-->
{val *list/name} {val list/name}
<!--{each list/text}-->
{val *list/text/body} {val list/text/body}
<!--{/each}-->
<!--{/each}-->
存在性の確認
def 〜 ndef 〜 elsedef 〜 elsendef 〜 else 〜 /def
指定したデータが存在するか、存在する場合は true (falseではないこと) を確認します。
<!--{def data}-->
Data is true.
<!--{/def}-->
<!--{ndef data}-->
Data is false or not exists.
<!--{/def}-->
<!--{def data}-->
Data is true.
<!--{else}-->
Data is false or not exists.
<!--{/def}-->
<!--{def data}-->
Data is true.
<!--{elsedef data2}-->
Data is false or not exists, but data2 is true.
<!--{/def}-->
<!--{def data}-->
Data is true.
<!--{elsendef data2}-->
Data is false or not exists,
and data2 is false or not exists.
<!--{/def}-->
<!--{def data}-->
Data is true.
<!--{elsedef data2}-->
Data is false or not exists, but data2 is true.
<!--{else}-->
Data and Data2 is false or not exists.
<!--{/def}-->