Smarty中section的使用

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

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

一、索引數組

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

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

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

二、關聯數組 it

$arr = array(
         array('id'=>1,'title'=>'title1'),
         array('id'=>2,'title'=>'title2'),
         array('id'=>3,'title'=>'title3')
);
    
$smarty->assign('news',$arr); io

在模板中顯示過程以下
複製代碼
 {section name=sn loop=$news}
     {if $smarty.section.sn.first}
         <table>
         <th>id</th>
         <th>title</th>
     {/if}
     <tr>
         <td>{$news[sn].id}</td>
         <td>{$news[sn].title}</td>
     </tr>
     {if $smarty.section.sn.last}
         </table>
     {/if}
 {sectionelse}
     there is no news.
 {/section} table

顯示結果以下(是一個表格的樣子,如下顯示的沒有加樣式):
id title
1 title1
2 title2
3 title3 ast

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

一、section中的屬性

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

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

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:用於顯示循環執行總的次數. 能夠在循環中或執行結束後調用此屬性.

相關文章
相關標籤/搜索