您的位置:首页 > 其它

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

2010-12-27 18:56 162 查看
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 ) )

模板代码

<{foreach from=$books key=num item="book"}>
<p><strong><{$i=$i+1}><{$i}>. Title:<{$book['title']}></strong><br />
Author:<{$book['author']}><br />
ISBN:<{$book['isbn']}><br />
Price:<{$book['price']}><br />
<{/foreach}>


此部分对应的打印结果:

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方式

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

<{assign var="i" value=0}>
<{section name=book loop=$books}>
<p><strong><{$i=$i+1}><{$i}>. Title:<{$books[book].title}></strong><br />
Author:<{$books[book].author}><br />
ISBN:<{$books[book].isbn}><br />
Price:<{$books[book].price}><br />
<{/section}>


输入内容同foreach方式的结果一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: