Smarty section,sectionelse

section,sectionelse

Table of Contents目錄

index

index_

previndex_

nextiteration

first

las

trow

num

loop

show

total

Attribute Name

Type

Required

Default

描述

name

string

Yes

n/a

The name of the section

loop

[$variable_name]

Yes

n/a

The name of the variable to determine # of loop iterations

start

integer

No

0

The index position that the section will begin looping. If the value is negative, the start position is calculated from the end of the array. For example, if there are seven values in the loop array and start is -2, the start index is 5. Invalid values (values outside of the length of the loop array) are automatically truncated to the closest valid value.

step

integer

No

1

The step value that will be used to traverse the loop array. For example, step=2 will loop on index 0,2,4, etc. If step is negative, it will step through the array backwards.

max

integer

No

1

Sets the maximum number of times the section will loop.

show

boolean

No

true

determines whether or not to show this section

屬性

類型

是否必須

缺省值

描述

name

string

Yes

n/a

該循環的名稱

loop

[$variable_name]

Yes

n/a

決定循環次數的變量名稱

start

integer

No

0

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

step

integer

No

1

該值決定循環的步長. 例如指定step=2將只遍歷下標爲0、2、4等的元素. 如果step爲負值,那麼遍歷數組的時候從後向前遍歷.

max

integer

No

1

設定循環最大執行次數.

show

boolean

No

true

決定是否顯示該循環.

模板的 section 用於遍歷數組中的數據. section 標籤必須成對出現. 必須設置 name 和 loop 屬性. 名稱可以是包含字母、數字和下劃線的任意組合. 可以嵌套但必須保證嵌套的 name 唯一. 變量 loop (通常是數組)決定循環執行的次數. 當需要在 section 循環內輸出變量時,必須在變量後加上中括號包含着的 name 變量. sectionelse 當 loop 變量無值時被執行.

Example 7-15. section
例 7-15. section 函數演示

{* this example will print out all the values of the $custid array *}
{section name=customer loop=$custid}
id: {$custid[customer]}

{/section}

OUTPUT:

id: 1000

id: 1001

id: 1002

例 7-16.loop 變量演示

{* the loop variable only determines the number of times to loop.
you can access any variable from the template within the section.
This example assumes that $custid, $name and $address are all
arrays containing the same number of values *}
{section name=customer loop=$custid}
id: {$custid[customer]}

name: {$name[customer]}

address: {$address[customer]}


{/section}

OUTPUT:

id: 1000

name: John Smith

address: 253 N 45th

id: 1001
name: Jack Jones
address: 417 Mulberry ln

id: 1002
name: Jane Munson
address: 5605 apple st

例 7-17. section 名稱演示

{* the name of the section can be anything you like,
and it is used to reference the data within the section *}
{section name=mydata loop=$custid}
id: {$custid[mydata]}

name: {$name[mydata]}

address: {$address[mydata]}


{/section}

例 7-18. 嵌套 section 演示

{* sections can be nested as deep as you like. With nested sections,
you can access complex data structures, such as multi-dimensional
arrays. In this example, $contact_type[customer] is an array of
contact types for the current customer. *}
{section name=customer loop=$custid}
id: {$custid[customer]}

name: {$name[customer]}

address: {$address[customer]}

{section name=contact loop=$contact_type[customer]}
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}

{/section}


{/section}

OUTPUT:

id: 1000

name: John Smith

address: 253 N 45th

home phone: 555-555-5555

cell phone: 555-555-5555

e-mail: john@mydomain.com

id: 1001
name: Jack Jones
address: 417 Mulberry ln
home phone: 555-555-5555
cell phone: 555-555-5555
e-mail: [email protected]

id: 1002
name: Jane Munson
address: 5605 apple st
home phone: 555-555-5555
cell phone: 555-555-5555
e-mail: [email protected]

例 7-19. section 遍歷多維數組演示

{* This is an example of printing an associative array
of data within a section *}
{section name=customer loop=$contacts}
name: {$contacts[customer].name}

home: {$contacts[customer].home}

cell: {$contacts[customer].cell}

e-mail: {$contacts[customer].email}


{/section}

OUTPUT:

name: John Smith

home: 555-555-5555

cell: 555-555-5555

e-mail: john@mydomain.com


name: Jack Jones

home phone: 555-555-5555

cell phone: 555-555-5555

e-mail: jack@mydomain.com


name: Jane Munson

home phone: 555-555-5555

cell phone: 555-555-5555

e-mail: jane@mydomain.com

例 7-20. sectionelse 演示

{* sectionelse will execute if there are no $custid values *}
{section name=customer loop=$custid}
id: {$custid[customer]}

{sectionelse}
there are no values in $custid.
{/section}

Section 循環也有可供調用的變量名. 通過如下方式調用{$smarty.section.sectionname.varname}.

注意:Smarty 1.5.0 版中,section 名稱屬性變量的格式由{%sectionname.varname%}變成 {$smarty.section.sectionname.varname},老版本的格式依然支持,但在手冊的例子中只提供新的格式.