smarty中section的使用

在smarty的使用過程當中,有不少時候須要將一個數組輸出到模板中來處理,如下將演示如何將一個索引(index)數組和關聯(assocaite)數組在頁面中展示出來。

本文中假設有以下一個索引數組php

一、索引數組html

1       $people   =   array ( ' tony ' , ' sweety ' , ' abc ' , ' four ' );
2       $smarty -> assign( ' people ' , $people );

在模板中顯示:
1  {section name=n loop=$people}
2      name:{$people[n]} < br />
3  {/section}

這樣在模板中就能夠顯示出這個數組的內容了。結果以下:數組

1  name:tony
2  name:sweety
3  name:abc
4  name:four

 

 

二、關聯數組oop

複製代碼
1       $arr   =   array (
2           array ( ' id ' => 1 , ' title ' => ' title1 ' ) ,
3           array ( ' id ' => 2 , ' title ' => ' title2 ' ) ,
4           array ( ' id ' => 3 , ' title ' => ' title3 ' )
5      );
6      
7       $smarty -> assign( ' news ' , $arr );
複製代碼

 

在模板中顯示過程以下spa

複製代碼
 1  {section name=sn loop=$news}
 2      {if $smarty.section.sn.first}
 3           < table >
 4           < th > id </ th >
 5           < th > title </ th >
 6      {/if}
 7       < tr >
 8           < td > {$news[sn].id} </ td >
 9           < td > {$news[sn].title} </ td >
10       </ tr >
11      {if $smarty.section.sn.last}
12           </ table >
13      {/if}
14  {sectionelse}
15      there is no news.
16  {/section}
複製代碼

 

顯示結果以下(是一個表格的樣子,如下顯示的沒有加樣式):code

1  id title 
2  1 title1 
3  2 title2 
4  3 title3 

 

能夠看出,不管是索引仍是關聯數組用起來都是很方便。下面介紹下section中各個屬性的說明:htm

一、section中的屬性blog

name:(必選) 是section循環的名稱只是標示循環惟一的名字沒有特別意義,前面沒有$符號;索引

loop: (必選)是在php聲明中的變量名稱,用來標示是循環哪個數組(即要循環數組名)須要使用$;get

start: (可選)循環執行的初始位置. 若是該值爲負數,開始位置從數組的尾部算起. 例如:若是數組中有7個元素,指定start爲-2,那麼指向當前數組的索引爲5. 非法值(超過了循環數組的下限)將被自動調整爲最接近的合法值.

step: (可選)如其它語言的循環,是一個步長,若是爲負數,則倒序循環;

max:(可選)循環的最大下標,若是是1則只循環1次,若是爲2則循環2次;

show:(可選)默認爲true即顯示。若是設置了{sectionelse}。表示若是數組沒有內容的時候顯示這部分的內容;若是show爲false則顯示這部分。若是沒有設置{sectionelse}則不輸出該數組。

 

二、smarty中section中的變量

index:用於顯示當前循環的索引,從0開始(若是指定了start屬性,那麼由該值開始),每次加1(若是指定了step屬性,那麼由該值決定).若是沒有指定step和start屬性,此值的做用和iteration相似,只不過從0開始而已.

index_prev:用於顯示上一個循環索引值. 循環開始時,此值爲-1.

index_next:用於顯示下一個循環索引值. 循環執行到最後一次時,此值仍然比當前索引值大1(若是指定了step,取決於此值).

iteration:用於顯示循環的次數.iteration 不像index屬性受start、step和max屬性的影響,該值老是從1開始(index是從0開始的).rownum 是iteration的別名,二者等同.

first:若是當前循環第一次執行,first 被設置爲true.

last:若是當前循環執行到最後一次,last 被設置爲true.

rownum:用於顯示循環的次數. 該屬性是iteration的別名,二者等同.

loop:用於顯示該循環上一次循環時的索引值. 該值能夠用於循環內部或循環結束後.

show:是 section 的參數. show 取值爲布爾值 true 或 false. 若是設置爲 false,該循環將不顯示. 若是指定了 sectionelse 子句,該字句是否顯示也取決於該值.

total:用於顯示循環執行總的次數. 能夠在循環中或執行結束後調用此屬性.

相關文章
相關標籤/搜索