ホームページ  >  記事  >  バックエンド開発  >  phpのsmartyセクションループ

phpのsmartyセクションループ

WBOY
WBOYオリジナル
2016-06-23 14:36:181032ブラウズ

============================================example6.php
== ========================================
/* *******************************************
*
* ファイル名: example6. php
* 関数: サンプルプログラム 2 を表示
*
* 作者: 兄貴
* メール: Teacherli@163.com
*
****************** ** ************************/
include_once("./comm/Smarty.class.php");

$smarty = new Smarty();
$smarty->templates("./templates"); -> ;templates_c("./templates_c");
$smarty->cache("./cache");
$smarty->caching = true; -> ;left_delimiter = "{";
$smarty->right_delimiter = "}";

$array[] = array("ニュースID"=>1, "ニュースタイトル"=> );
$array[] = array("ニュースID"=>2, "ニュースタイトル"=>"ニュース第2弾");
$array[] = array("ニュースID"=>3, "ニュースタイトル" "= >"ニュース第3号");
$array[] = array("ニュースID"=>4, "ニュースタイトル"=>"ニュース第4号");
$array[] = array( "newsID "=>5, "newsTitle"=>"ニュース 第 5 回");
$array[] = array("newsID"=>6, "newsTitle"=>"ニュース 第 6 回") );

$smarty->assign("newsArray", $array);

// ./templates にあるindex.tpl テンプレートをコンパイルして表示します
$smarty->display("example6.tpl") ;
?>

=================================== ==== ====
example6.php 出力ファイル
=================================== ====== ==========

foreach
配列はここに出力されます:

ニュース番号: 1

ニュース番号: 2
&lt>ニュース番号: 5

ニュース番号: 5

ニュース番号: 6



foreach は、foreachelse と一致させることもできます。具体的な使用方法については、マニュアルを参照してください。 。

2. セクション:
セクションは、foreach の欠点を解決するために作成されました。foreach と同様に、より複雑で、プログラムのニーズを大幅に満たすことができます。 foreach の代わりにこれを使用することに慣れている場合、基本的なプロトタイプは次のとおりです:

{section name = nameloop = $varName[, start = $start, step = $step, max = $max, show = true]}

name:セクション $
で名前を追加する必要はありません。 $loop: ループする変数。プログラム内でこの変数を操作するには assign を使用します。
$start: ループを開始する添字、ループの添字はデフォルトで 0 から始まります
$step: 各ループ中の添字の増分
$max: 最大のループ添字
$show: ブール型、表示するかどうかを決定しますこのブロック、デフォルトは true です

ここで説明が必要な名詞があります:
巡回添え字: その実際の英語名はインデックスであり、ここでは主に理解を容易にするために「添え字」と訳します。このループ ブロックを表示するときの現在のループ インデックスを表します。デフォルトでは 0 から始まり、$start が 5 に設定されている場合は、5 からカウントされます。これはテンプレート設計部分で使用されています。これは現在の {section} の属性であり、呼び出しメソッドは Smarty.section.sectionName.index です。ここでの sectionName は関数プロトタイプの name 属性を指します。
{section} ブロックの属性値は次のとおりです:
1.index: 上で紹介した「巡回添字」、デフォルトは 0 です
2.index_prev: 現在の添字の前の値、デフォルトは-1
3.index_next: 現在のインデックスの次の値、デフォルトは 1
4. first: 最初のループかどうか
5. last: 最後のループかどうか
6. iteration: ループの数
7. rownum: 現在の行番号、反復の別のエイリアス
8. ループ:最後のループ番号、セクション ブロックの後に使用して、セクションのサイクル時間の数をカウントできます
9. total: サイクル数、セクション ブロックの後に使用して、サイクル時間の数をカウントできます
10. show: Itは関数の宣言に含まれており、セクションを表示するかどうかを決定するために使用されます

これらの属性は、プログラム内で柔軟に使用することができます。テンプレート部分に戻って見てみることができます。

同様に、{section} を {sectionelse} と組み合わせて使用​​して、受信配列変数が空の場合のテンプレートの処理を示すこともできます。

上記の例では、現在の関数を実現するために、{foreach} の代わりに {section} を使用しています。この例では、tpl テンプレートである php に {foreach} を実装するために

{section} のみを使用していることに注意してください。変更はありません。プログラム ファイルに {sectionelse} 処理ブロックが追加されます:

================================ = ==========
example7.tpl
================================== = ========
これは foreach の使用例です。
これは配列を出力します。

<{セクション名=ループ ループ=$ニュース}> ニュース番号: <{$News[loop].newsID}>

ニュース タイトル: <{$ ニュース[ループ].newsTitle}>



<{sectionelse}> 申し訳ありませんが、ニュースは入力されていません。
<{/section}>

=================== ===============
example7.php
============================== ============
/********************************************
*
* ファイル名: example7. php
* 関数: サンプルプログラム 2 を表示
*
* 作者: 兄貴
* メール: Teacherli@163.com
*
****************** ** ************************/
include_once("./comm/Smarty.class.php")

$smarty = new Smarty( ; $smarty->cache_dir = "./cache"; // キャッシュ ディレクトリを設定します
$smarty->caching = true; ;{ ";
$smarty->right_delimiter = "}>>";

$array[] = array("ニュースID"=>1, "ニュースタイトル"=>"ニュース 1");
$array [] = array("ニュースID"=>2, "ニュースタイトル"=>"ニュース第2回");
$array[] = array("ニュースID"=>3, "ニュースタイトル"=>" 3番目のニュース");
$array[] = array("ニュースID"=>4, "ニュースタイトル"=>"4番目のニュース");
$array[] = array("ニュースID"=>5, " newsTitle"=>"ニュース 第 5 号");
$array[] = array("newsID"=>6, "newsTitle"=>"ニュース 第 6 号");

$ Smarty-> assign("News", $array);

// ./templates にあるindex.tpl テンプレートをコンパイルして表示します
$smarty->display("example7.tpl")

==; =============================================== =
example7.php 出力ファイル
============================================ =======

foreach

ここに配列が出力されます: ;

ニュース番号: 1

ニュース番号: 2

ニュース番号: 3

ニュース コンテンツ: ニュース 3


ニュース コンテンツ: 4


ニュースコンテンツ: ニュース No. 5


ニュース番号: 6
ニュース コンテンツ: ニュース No. 6




ここの {section} ブロックでの変数の名前の付け方は少し面倒に感じますが、そうではありません。重要なのは、テンプレート変数を使用することだけを忘れないでください:
$loopName[name].var このパターンで十分です。loopName はループで割り当てられた変数名、[name] は name で割り当てられた文字列、最後はプログラム配列に追加したい変数名に対応する添字名を設定するだけです。



さて、Smarty の学習ガイドはこれで終わりです。一般的なアプリケーションについては、この知識で十分です。他の高度なテクニックについては、次のセクションで Smarty の例について説明します。実際のアプリケーションでは、php の組み込み mysql ステートメントと phplib の DB クラスを使用して、同じ例で各クラス ライブラリの実装について説明します。

http://blog.163.com/alex_kame/blog/static/1454674820094611141679/



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。