您当前的位置:首页 > 分类 > 技术资讯 > Smarty > 正文

Smarty section,sectionelse 遍历数

发布时间:2016-08-05 11:38:56      来源:51推一把
【摘要】模板的 section 用于遍历数组中的数据. section 标签必须成对出现. 必须设置 name 和 loop 属性. 名称可以是包含字母、数字和下划线的任意组合
section,sectionelse

index、index_、previndex_、nextiteration、first、las、trow、num、loop、show、total

模板的 section 用于遍历数组中的数据. section 标签必须成对出现. 必须设置 name 和 loop 属性. 名称可以是包含字母、数字和下划线的任意
组合. 可以嵌套但必须保证嵌套的 name 唯一. 变量 loop (通常是数组)决定循环执行的次数. 当需要在 section 循环内输出变量时,必须在变量
后加上中括号包含着的 name 变量. sectionelse 当 loop 变量无值时被执行.

属性 类型 是否必须 缺省值 描述
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 函数演示
{* 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

#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

#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}

#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: jack@mydomain.com
id: 1002
name: Jane Munson
address: 5605 apple st
home phone: 555-555-5555
cell phone: 555-555-5555
e-mail: jane@mydomain.com

#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


#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},老版本的格式依然支持,但在手册的例子中只提供新的格式.