现在的位置: 首页 > 综合 > 正文

Smarty模板的2种循环方式及Smarty中变量定义

2014年01月04日 ⁄ 综合 ⁄ 共 1531字 ⁄ 字号 评论关闭

smarty模板的循环有2种写法:foreach、section

 

1、foreach方式

 

格式(注:此篇日志中,smarty模板的开始结束标识符被定义为:<{ }>):

<{foreach from=$arrayName key=colkey  item=$colvalue name=elementName}>

参数说明:

from :必填,说明循环源

item:必填,从数组中取得的value

key:选填,从数组中取得value对应的key

name:选填,给从数组取得的“key-value“对命名

 

下面是foreach的例子:

$books=Array ( [0] => Array ( [isbn] => 0-672-31745-1 [author] => Thomas Down [title] => Installing Debian GNU/Linux [price] => 24.99 ) [1] => Array ( [isbn] => 0-672-31769-9 [author] => Thomas Schenk [title] => Caldera OpenLinux System Administration Unleashed [price] => 49.99 ) )

 

模板代码

 

此部分对应的打印结果:

 

1. Title:Installing Debian GNU/Linux
Author:Thomas Down
ISBN:0-672-31745-1
Price:24.99

2. Title:Caldera OpenLinux System Administration Unleashed
Author:Thomas Schenk
ISBN:0-672-31769-9
Price:49.99

此处需注意如下

1、输出变量,需要加上模板的开始、结束符。在调试的过程中,由于没有加<{}>,导致 输入的是:未解析的$book['author'] ,很费了点功夫在找到问题所在。

2、模板中定义变量,例子如下:

<{assign var="i" value=0}>  (说明:i是整型,所以value=0,不需要加双引号,否则会被判定为字符串类型)

由于foreach没有像for那样的计数器,所以在这里自定义了一个计数器,在循环中计数。作用:用于输出没条记录前的编号。也可以不在模板页定义变量,在include该模板的页,管理变量时,传一个变量i进来也行。

3、关于smarty中的加运算,试了一下,smarty中不支持“++”(包括变量前++、变量后++)、“+=”的方式,所以增加1还是用“$i=$i+1“的方式

 

2、section方式

相应模板部分的内容如下:

 输入内容同foreach方式的结果一致。

抱歉!评论已关闭.