ホームページ > バックエンド開発 > PHPチュートリアル > PHP での Smarty の使用パート 4: カスタム変数 Mediator_PHP チュートリアル

PHP での Smarty の使用パート 4: カスタム変数 Mediator_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:46:28
オリジナル
856 人が閲覧しました

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

Smarty の変数メディエーター

<{$str}>

<{$str1}>

<{$str2}>

<{$str3}>

<{$str4}>

                                                        

<{$str|transform:" lower"}>
-- 出力文字列を小文字に変換します --> <{$str|transform:"upper"}>

<{$str|transform:"firstdx"}>

<{$str|subString:0:15:"###"}>

<{$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.さんのコラムより抜粋


http://www.bkjia.com/PHPjc/478570.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/478570.html技術記事 PHP には、テキストを処理するための関数が多数あり、その関数を通じて処理するテキストを処理し、Smarty テンプレート エンジンの assign() を呼び出して値を変数に割り当て、テンプレートに割り当てることができます。 .
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート