変数を出力するだけでは、テンプレート出力のニーズを満たせません。実際、組み込みのテンプレート エンジンは、テンプレート変数のレギュレーターと書式設定関数の使用をサポートしており、複数の関数の同時使用をサポートしています。テンプレートタグに使用する関数は、smarty とは異なり、PHP 組み込み関数またはユーザー定義関数を使用できます。テンプレートに使用する関数を特別に定義する必要はありません。
テンプレート変数の関数呼び出し形式は次のとおりです:
XML/HTML コード
{$varname|function1|function2=arg1,arg2,### }
説明:
{ と $ 記号の間にはスペースを入れることはできません。また、次のパラメーターにスペースを入れても問題ありません
###はテンプレート変数自体のパラメータ位置を表します
複数の関数と関数間のスペースをサポート
機能シールド機能をサポートし、禁止される機能のリストを設定ファイルで設定可能
変数キャッシュ機能をサポートしており、繰り返される変数文字列は複数回解析されません
使用例:
XML/HTML コード
{$webTitle|md5|strtoupper|substr=0,3}
コンパイルされた PHP コードは次のとおりです:
PHPコード
関数の定義と使用順序の対応に注意してください。一般に、関数の最初のパラメータは前の変数、または変数が関数の最初のパラメータではない場合は、前の関数の結果になります。位置決め記号を使用する必要があります。例:
XML/HTML コード
{$create_time|date="y-m-d",###}
コンパイルされた PHP は次のとおりです:
PHPコード
TMPL_DENY_FUNC_LIST=>「エコー、終了、停止」
複数の関数を区切るには半角カンマを使用します。
また、テンプレート変数を渡さずにテンプレート ファイル内で関数を直接呼び出すためのショートカット メソッドも提供します。これには、次の 2 つのメソッドが含まれます:
1. メソッドを実行し、戻り値を出力します:
形式: {:function(…)}
たとえば、U メソッドの戻り値を出力します:
XML/HTML コード
コンパイルされたPHPコードは次のとおりです
2. 出力なしでメソッドを実行します:
形式: {~function(…)}
XML/HTML コード
{~say_hello('ThinkPHP')}
コンパイルされた PHP コードは次のとおりです:
PHPコード
たとえば、私のカスタム関数は次のようになります
関数カテゴリ($cid)
$Category=D("カテゴリ");
$Category=$Category->where('id='.$cid)->find();
return $Category['title'];
}
テンプレート内でこの関数を呼び出したい場合は、テンプレート内で次のように記述できます
{$vo.cid|category=###}
もちろん、カスタム関数はプロジェクトディレクトリ/Common/common.phpに配置する必要があります
幸いなことに、カスタム関数のメソッドが提供されており、カスタム関数を使用して解決できます。 ThinkPHP テンプレートのカスタム関数の構文は次のとおりです:
形式: {:function(…)} (公式ヘルプドキュメントを参照: http://thinkphp.cn/Manual/196)
これを使って足し算や引き算をしてみましょう。
ThinkPHP で関数を定義します。プロジェクトの common フォルダーに新しい common.php ファイルを作成します (システムによって自動的にロードされます)。 2 つの関数を定義します:
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
関数
template_add($a,$b){
echo(intval($a)+intval($b));
}
関数
template_substract($a,$b){
echo(intval($a)-intval($b));
}
テンプレートでの関数の使用:
{:template_add($var1,$var2)}変数 var1 と var2 の合計を表示できます。
Commonディレクトリのcommon.phpにカスタム関数を置き、呼び出せない場合はファイル名をcommon.class.phpに変更してimport(@.common.common)を定義します