Terrier

A simple mailform written by PHP


Project maintained by ysugimoto Hosted on GitHub Pages — Theme by mattgraham

Template

このページではTerrierで利用しているテンプレートエンジンについて解説します。
TerrierのテンプレートエンジンはPHPコードとして即時コンパイルして実行されます。一時ファイルは生成しません。

Basic

テンプレートエンジンはHTML中に"{{XXXX}}"の形式で指定された部分に変数をバインドします。オブジェクトや連想配列の値は"."のシンタックスでアクセスできます。
Terrier側で予めアサインされた以下の値が使用でき、出力する値は全てエスケープされます。

例えば、nameフィールドへの値の設置とバリデーションエラーの出力は以下のようになります。


<input type="text" name="name" value"{{value.name}}">
<p class="error">{{error.name}}</p>

なお、"{{%アクセス名}}"とすることで、エスケープしない値を出力することも可能ですが、非推奨です。

Controls

テンプレート中では"if""for"の構文が使用できます。判定条件はPHPと同じですが、変数へのアクセスは"isset()"で自動チェックされます。


// バリデーションエラーがあれば表示する
{{if error.name}}
<p class="error">{{error.name}}</>
{{/if}}

数値判定なども可能です。


// 選択値が1より大きい場合に文言を表示
{{if value.select > 1}}
<p>選択値が1より大きいです</>
{{/if}}

テンプレート内のループ構文は"for"が使えます。内部ではオブジェクト、配列、連想配列に関わらず全てループ可能です。ループ中は"@index"でキーに、"@data"で値にアクセス可能で、ループ対象の値が配列などの場合はそのままドットでアクセスすることが可能です。


// バリデーションエラー一覧を出力
{{for error}}
<p class="error">フィールド名:{{@index}}、メッセージ:{{@data}}</>
{{/for}}

"@parent"でループ中の親オブジェクトにアクセス可能です。

Helpers

"{{#ヘルパ関数}}"と記述することで、ヘルパ関数を呼び出すことが可能です。
ヘルパ関数はPHP組み込みの関数の他に、テンプレートディレクトリ内のfunctions.phpで定義した関数を呼び出し可能です。


// functions.phpで定義した関数を呼び出します
{{#input_hidden_all}}

// PHP組み込みのdate関数を呼び出します。引数を渡す場合は半角スペースに続いて指定します。
{{#date 'Y-m-d'}}