ホームページ  >  記事  >  バックエンド開発  >  phpの使い方を詳しく解説 Smarty template_PHPチュートリアル

phpの使い方を詳しく解説 Smarty template_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-22 09:02:35954ブラウズ

1. テンプレート内のコメント


各 Smarty テンプレート ファイルは、Web フロントエンド言語 (xhtml、css、javascript など) と Smarty エンジンの構文を組み合わせて開発されます。


Webフロントエンド開発に使用されている言語はオリジナルのものとまったく同じで、コメントも変更されていません


Smarty のコメント構文は「左ターミネータ変数値*」と「*右ターミネータ変数値」です。これら 2 つの区切り文字の間のコンテンツはコメント コンテンツであり、1 行以上を含めることができ、ユーザーは Web ページを参照してそれを表示できます。元のコードにはコメントは表示されません。これらはテンプレート内の単なるコメントです。以下はコメントの小さな例です。


$smarty->left_lelimiter = '<{';

$smarty->right_delimiter = '}>';

注意: <{* これはメモです *}>

2: テンプレート内の変数宣言


Smarty では、すべてが変数に基づいており、すべてのプレゼンテーション ロジックはテンプレート自体によって制御されます


変数にはいくつかの異なるタイプがあります。変数のタイプは、その前にどのようなシンボルが付いているか、または

で囲まれているかによって異なります。


変数はジョブ関数の属性や修飾子のパラメータとして直接出力したり、内部条件式などで使用したりできます。


<{$name}> <{*通常の型変数、値を割り当てるにはテンプレート内の assign 関数を呼び出す必要があります*}>


<{$contacts[row].phone}<{*配列型変数。値を割り当てるにはテンプレート内の assign 関数を呼び出す必要があります*}>

&lt; body bgcolor = "&lt; {#bgcolor#}&gt;&lt; {*構成ファイルから変数の値を読み取り、&gt;

PHP から割り当てた変数を Smarty テンプレートに出力する場合は、変数の前に $ 記号を追加し、区切り記号で囲む必要があります。命名方法は PHP の変数の命名方法と同じで、区切り記号を使用します。これは PHP の に似ています (実際にはこれに置き換えられます)

その3:phpから割り当てた変数をテンプレートに出力します

Smarty テンプレートでは一般的に 2 種類の変数が使用されます。1 つは php から割り当てられた変数で、もう 1 つは設定ファイルから読み取られた変数です

注: テンプレートは、PHP から割り当てられた変数のみを出力できます。これらの変数はすべてグローバルであり、2 回以上割り当てられる場合、変数の内容は最後に割り当てられます。

Smarty で提供される foreach ステートメントまたはセクション ステートメントは、出力配列の各要素を反復処理するために使用されます。インデックス配列と連想配列がテンプレートで出力される方法は、テンプレートでアクセスされ、php スクリプトで参照される方法と同様です。 、テンプレートで連想配列の要素を指定する方法は、「.」を使用してアクセスします。

テンプレート内のオブジェクトへのアクセスは、PHP スクリプトの場合と同じで、どちらも「->」演算子を使用します。

4: Smarty テンプレートの変数の数学的計算

テンプレート内の変数に値を直接割り当てることはできませんが、PHP スクリプトで数学的演算を実行できる限り、以下に示すようにテンプレートに適用できます。

<{$foo + 1}> <{* 変数プラス 1 *}>

<{$foo * $bar}<{* 2 つの変数の乗算 *}>

<{$foo->bar - $bar[1] * $foo->bar - 3 * 7}<{* 複合型変数が演算に参加します *}>

<{if($foo + 2 == 10)}<{* 数学的演算はプログラム ロジックに適用されます *}>


コードは次のとおりです

コードは次のとおりです コードをコピー

$smarty->left_lelimiter = '<{';

$smarty->right_delimiter = '}>';

注意: <{* これはメモです *}>

コードをコピー <{$foo * $bar}<{* 2 つの変数の乗算 *}>
<{$foo + 1}> <{* 変数プラス 1 *}>
<{$foo->bar - $bar[1] * $foo->bar - 3 * 7}<{* 複合型変数が演算に参加します *}>

<{if($foo + 2 == 10)}<{* 数学演算はプログラム ロジックに適用されます *}>



二重引用符で埋め込まれた変数は Smarty テンプレートで認識できますが、以下に示すように、一部の変数はバッククォート '`' (この記号は '~' と同じキー上にあります) で囲む必要があります:

コードは次のとおりです コードをコピー


<{"test $foo test"}<{* 変数は二重引用符で囲んで使用してください *}>


<{"test `$foo[0]` test"}> <{* 二重引用符で囲まれた配列変数 *}>


<{"test `$foo.bar` test"}> <{* バックティックで囲まれた二重引用符 *}>


<{"test $foo test"}<{* 変数は二重引用符で囲んで使用してください *}>


<{"test `$foo[0]` test"}> <{* 二重引用符で囲まれた配列変数 *}>


<{"test `$foo.bar` test"}> <{* バックティックで囲まれた二重引用符 *}>

ステップ 1: Smarty テンプレート エンジンをロードします (例: require 'libs/Smarty.class.php')。

ステップ 2: 次のような Smarty オブジェクトを作成します: $smarty = new Smarty();

ステップ 3: キャッシュの有効化、テンプレートのストレージ パスなど、Smarty のデフォルトの動作を変更します。

ステップ 4: Smarty オブジェクトの assign() メソッドを使用して、プログラムで取得したデータをテンプレート内の対応する変数に割り当てます

ステップ5: Smartyオブジェクトのdisplay()メソッドを使用してテンプレートコンテンツを出力します

assign() メソッド

このメソッドは、テンプレート内の変数に値を割り当てるために使用され、使いやすくなります

プロトタイプ: void assign(string varname,mixed var)

このメソッドは、php でサポートされている型データを配列やオブジェクトを含むテンプレート変数に割り当てることができます

使い方は2通りあります

//「名前/値」のペアを指定します

$smarty->assign('質問','お元気ですか');
$smarty->assign('答え','あまり良くありません');

//「名前/値」を含めるように指定します
$smarty->assign(array('question' => '調子はどうですか','answer' => 'あまり良くありません'));//このメソッドはあまり使用されません
display() メソッド

このメソッドは Smarty ベースのスクリプトで使用する必要があり、スクリプト内で 1 回のみ使用できます。Smarty エンジンによって参照されるテンプレートを取得して表示します

プロトタイプ: var display(文字列テンプレート[,文字列キャッシュ_ID][,文字列コンパイル_ID])

パラメータ 1: テンプレートは必須です。正当なテンプレート リソースのタイプとパスを指定します

パラメータ 2:cache_id はキャッシュ識別子の名前を指定します

パラメータ 3: 1 ページに複数のキャッシュを維持する場合、compile_id が使用されます

使い方は以下の通りです
$smarty->display('tpl/template_dir/template.html');

簡単な例

1. libs: Smarty クラス ライブラリです

2. tpl/cache_dir: キャッシュテンプレートを保存します

3. tpl/compile_dir: コンパイルされたテンプレートファイルを保存します

4. tpl/config_dir: 特別な構成ファイルを保存します

5. tpl/template_dir: テンプレートファイルを保存します

Y 6. Smarty.phpファイルでは、以下のようにSmartyクラスのオブジェクトが解放され、各オブジェクトの属性値が設定されます

require 'libs/Smarty.class.php';//Smarty.class.php ファイルをロードする


define( 'site_root'、 '。

$tpl = new Smarty();


$ TPL-> テンプレートディレクトリ = 'テンプレートディレクトリ';

$tpl->compile_dir = SITE_ROOT .//コンパイルされたテンプレート ファイルを保存します


$tpl->config_dir = SITE_ROOT .//特別な設定ファイルを保存します


$tpl->cache_dir = SITE_ROOT .//Smarty キャッシュ ファイルを保存します。


$ tpl-&gt; caching = 1; //キャッシュを有効

$tpl->cache_lifetime = 60*60*24;//キャッシュ時間 1 日

$tpl->left_delimiter = '<{';//左ターミネータ


$ tpl-&gt; right_delimiter = '}&gt;'; //右ターミネーター

コードは次のとおりです コードをコピー

require 'libs/Smarty.class.php';//Smarty.class.php ファイルをロードする

define( 'site_root'、 '。

$tpl = new Smarty();

$ TPL-> テンプレートディレクトリ = 'テンプレートディレクトリ';

$tpl->compile_dir = SITE_ROOT .//コンパイルされたテンプレート ファイルを保存します

$tpl->config_dir = SITE_ROOT .//特別な設定ファイルを保存します

$tpl->cache_dir = SITE_ROOT .//Smarty キャッシュ ファイルを保存します。

$ tpl-&gt; caching = 1; //キャッシュを有効


$tpl->cache_lifetime = 60*60*24;//キャッシュ時間 1 日

$tpl->left_delimiter = '<{';//左ターミネータ

$ tpl-&gt; right_delimiter = '}&gt;'; //右ターミネーター


7. Index.php ファイル、ホームページのコードは次のとおりです


'smarty.php' が必要です;


$tpl->assign('title','title test');


$tpl->assign('content','content test');


$tpl->display('template.html');

8. tpl/template_dir/template.html テンプレートファイルは以下の通りです


                                                                                                                                                                                                                                                          ​ 


                                                                                                  

                                                                                                                 

                                                                                                      


                                                                                                         

                                                                                                       

                                                                                                                    


                                                                                                     




コードは次のとおりです


コードをコピー

コードは次のとおりです コードをコピー

'smarty.php' が必要です;


$tpl->assign('title','title test');


$tpl->assign('content','content test');


$tpl->display('template.html');


                                                                                                                                                                                                                                                          ​                                                                                                                                                                                                                        

                                                                                                      

                                                                                                         

                                                                                                       


                                                                                                                

                                                                                                       



www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/371918.html技術記事 1. テンプレート内のコメント 各 Smarty テンプレート ファイルは、Web フロントエンド言語 (xhtml、css、javascript など) と Smarty エンジンの構文を組み合わせて開発されています。 Web フロントエンド開発に使用される言語...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。