メインコンテンツまでスキップ

テンプレートについて

テンプレートについて

Feggには独自のテンプレートエンジンが搭載されており、アプリケーションコード(PHPコード)と表示(HTML/CSS)を分離できます。Feggはテンプレートファイル内のアプリケーションコードに{{}}タグを使用します。コントローラークラスからテンプレートをコンパイルするメソッドを実行します。

テンプレートファイルはtemplate_name.tplの名前形式で**code/template/**ディレクトリに保存されます。

表示メソッド

表示メソッドはコントローラークラスからテンプレートファイルを呼び出します。

以下はFeggの表示メソッドですが、クリックジャッキング攻撃を避けるためにdisplayPageメソッドのみを使用することを推奨します。

  • Application::displayTemplate
    • コンパイルされたテンプレートを表示
  • Application::fetchTemplate
    • コンパイルされたテンプレートを文字列として返す
  • Application::fetchPage
    • 宣言されたコントローラーとテンプレート変数を含むコンパイルされたテンプレートを文字列として返す
  • Application::displayPage
    • 宣言されたコントローラーとテンプレート変数を含むコンパイルされたテンプレートを表示し、クリックジャッキング攻撃に対する予防措置を講じる

テンプレートヘルパーメソッド

テンプレートヘルパーメソッドは、テンプレートに特別な変数を渡すために使用されます。

テンプレートルール

テンプレートファイルにはいくつかの操作記法があります。

修飾子

修飾子の使用方法

修飾子を使用して、テンプレート内のアプリケーションコードで変数の戻り値を変更できます。

修飾子はパイプ記号(|)を使用して変数から分離され、コロン記号(:)で分離されたオプションの引数を持つことができます。複数の修飾子を連鎖させることができ、左から右に変数を変更します。したがって、最初のフィルタリングの出力が次のフィルタリングに適用されます。

{{ $var|noescape|function:param }}

noescape

Feggは自動的に文字値をエスケープします。エスケープ値が不要な場合は、noescape修飾子を使用できます。

コントローラー
$this->page['foo'] = '<p>bar</p>';
テンプレート
{{ $page.foo }} -> <p>bar</p>
{{ $page.foo|noescape }} -> bar

br

文字列内で見つかったすべての改行(\n)にHTML改行を挿入します。

コントローラー
$this->page['foo'] = "これはテストテキストです。\n これは新しい行のテキストです。";
テンプレート
{{ $page.foo }} -> これはテストテキストです。 これは新しい行のテキストです。
{{ $page.foo|br }} -> これはテストテキストです。
これは新しい行のテキストです。