PHP には、テキストを処理するための関数が多数あり、その関数を通じて処理するテキストを処理し、Smarty テンプレート エンジンの assign() を呼び出して値を変数に割り当て、それを表示用のテンプレートに割り当てることができます。 。
Smarty の変数メディエーターは PHP のテキスト処理関数に似ていますが、Smarty では構文が異なり、パラメーターがある場合は、その直後に「|」を介してメディエーター関数名を追加する必要があります。 "。パラメータが 2 つある場合は、それらを加算するだけです。
形式: {$var|modifier1:"Parameter1":"Parameter2":Parameter3|modifier2|modifier3|...}
メディエーターを定義するファイルは Smarty に配置する必要があります。具体的なパスは libs/plugins/ です。ファイル名は Smarty 形式である必要があります modifier.moderatorname.php
以下は、Smarty でのカスタム変数メディエーターの使用例を示しています
プログラムのアイデア: 2 つの変数メディエーターを作成します。1 つはテキストを変換し、もう 1 つはテキストをインターセプトします。
init.inc.php (Smarty 初期化ファイル)
Define('ROOT_PATH', dirname(__FILE__)) // Web サイトのルート ディレクトリを設定します
require ROOT_PATH.'/libs/Smarty.class.php' //Smarty テンプレート エンジンをロードします
;$_tpl = new Smarty() // インスタンス オブジェクトを作成します
$_tpl->template_dir = ROOT_PATH.'/tpl/' //テンプレートファイルのディレクトリを設定します
;$_tpl->compile_dir = ROOT_PATH.'./com/' //コンパイル済みファイルのディレクトリを設定します
;$_tpl->left_delimiter = '<{' //左区切り文字を設定します
;$_tpl->right_delimiter = '}>' //正しい区切り文字を設定します
;?>
Index.php(メインファイル)
定義('CONST_VAR', 'ABC');
require 'init.inc.php' //テンプレート初期化ファイルを導入します;
グローバル $_tpl;
$_str = 'abcdEFGHigklmnOPQRSTuvwsYz' //文字列を定義します
;$_tpl->assign('str',$_str); $_tpl->assign('str',$_str); // 文字列を str に代入します。
$_tpl->assign('str1',strto lower($_str)); //すべての文字列を小文字に変換し、str1 に代入します$_tpl->assign('str2',strtoupper($_str)); //すべての文字列を大文字に変換し、str2 に代入します
$_tpl->assign('str3',ucfirst($_str)); //すべての文字列を大文字に変換し、str3 に割り当てます
$_tpl->assign('str4',substr($_str, 0,15).'...');//文字列の最初の 15 文字をインターセプトし、後続の文字を '...' に置き換えます。そしてstr4に代入します
$_tpl->assign('str5',strtoupper(substr($_str, 0,15)).'...'); //文字列の最初の 15 文字を切り取って大文字に変換し、' .. .' 代わりに str4 に割り当てます
$_tpl->display('index.tpl') //テンプレートを紹介します
?>
tpl/index.tpl
頭>
<{$str}>
<{$str1}>
<{$str3}>
<{$str|transform:" lower"}>
-- 出力文字列を小文字に変換します -->
<{$str|transform:"upper"}>
<{$str|transform:"firstdx"}>
<{$str|subString:0:15:"@@@"|transform:"upper"}>
<{$str|transform:"upper"|subString:0:15:"@@@"}>
/libs/plugins/modifier.transform.php (変換ファイル修飾子)
/**
*smarty_modifier_transform
* * 文字列変換用の変数メディエーター関数
* @param string $string 文字列を処理しています
* @param string $type 処理タイプ
*/
関数smarty_modifier_transform($string,$type) {
スイッチ ($type) {
ケース「上部」:
$str = strtoupper($string);
壊す;
大文字小文字:$str = strto lower($string);
壊す;
ケース「firstdx」:$str = ucfirst($string);
壊す;
デフォルト:$str = $string;
}
戻り $str;
}
?>
lib/plugins/modifier.subString.php (インターセプトテキスト修飾子)
/**
*smarty_modifier_subString
* * プロセスインターセプト文字列メディエーター
* @param string $string 文字列を処理しています
* @param int $start_num デフォルトでは先頭から始まる開始位置
* @param int $end_num 終了位置、デフォルトは 20
* @param string $addTo 文字列を追加します、デフォルトは '...'
*/
関数 Smarty_modifier_subString($string,$start_num=0,$end_num=20,$addTo='...') {
$_str = '';
If (strlen(substr($string, $start_num, $end_num))>=$end_num) {
$_str = substr($string, $start_num, $end_num).$addTo;
} else {$_str = substr($string, $start_num, $end_num);
}
$_str を返します。
}?>
実行結果:
上の例は、作成したメディエーター関数を呼び出すことができるように、メディエーター ファイルを Smarty のプラグイン ディレクトリ plugins に配置する必要があり、命名は Smarty のルールに従う必要があることを示しています。説明する必要があるもう 1 つの点は、定義された関数名は Smarty のデフォルトの命名規則 (たとえば、smarty_modifier_XXX) にも準拠する必要があり、モディファイア ファイルには複数の関数ではなく 1 つの関数のみを含めることができるということです。
… Smaryの内蔵メディエーターについては次のセクションで紹介します
Lee.さんのコラムより抜粋