本文实例总结了smarty中常用方法。分享给大家供大家参考。具体如下:
1. Smarty中foreach的index、iteration的使用
.index包含当前数组索引,从零开始。
index示例
1
2
3
4
5
6
7
8
9
10
|
{* The header block is output every five rows *}
{* 每五行输出一次头部区块 *}
<table>
{ foreach from= $items key=myId item=i name=foo}
{ if $smarty . foreach .foo.index % 5 == 0}
<tr><th>Title</th></tr>
{/ if }
<tr><td>{ $i .label}</td></tr>
{/ foreach }
</table>
|
.iteration包含当前循环次数,与index不同,从1开始,每次循环增长1。
iteration和index示例
1
2
3
4
5
|
{* this will output 0|1, 1|2, 2|3, ... etc *}
{* 该例将输出0|1, 1|2, 2|3, ... 等等 *}
{ foreach from= $myArray item=i name=foo}
{ $smarty . foreach .foo.index}|{ $smarty . foreach .foo.iteration},
{/ foreach }
|
2. smarty中section的嵌套使用
示例1:
1
2
3
4
5
6
7
8
9
10
11
|
$bookmarks = array ( '0' => array ( 'name' => 'n1' , 'url' => 'url2' ), '1' => array ( 'name' => 'n21' , 'url' => 'url22' ));
$categories = array ( '0' => array ( 'cate_id' => 'n1' , 'cate_name' => 'url2' ), '1' => array ( 'cate_id' => 'n21' , 'cate_name' => 'url22' ));
{section name= 'bm' loop= $bookmarks }
Name: $bookmarks [bm].name
URL: $bookmarks [bm].url
{section name= 'cate' loop= $categories [bm]}
$categories [bm][cate].cate_id
$categories [bm][cate].cate_name
{/section}
{/section}
::::
|
示例2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$lists = array ();
for (...){
$oneList [ 'dateTime' ] = date ( "Y-m-d" );
$oneList [ 'detailList' ] = array ();
for (....){
$oneList [ 'detailList' ][ $j ][ 'count' ] = $onecout ;
$oneList [ 'detailList' ][ $j ][ 'title' ] = $onetitle ;
}
$lists [] = $oneList ;
}
:::::
{section name=loop loop= $lists }
{ $lists [loop].dateTime}
{section name=loop2 loop= $lists [loop][ "detailList" ]}
{ $lists [loop][ 'detailList' ][loop2].title}
{ $lists [loop][ "detailList" ][loop2]. count }
{/section}
{/section}
|
3. 其他常用关键字
<{section loop= $varName[,start=$start,step=$setp,max=$max,$show=true]}>
name: section的名称,不用加$;
$loop: 要循环的变量,程度中要使用assign对这个变量进行操作。
$start: 开始循环的下标。默认为0;
$step: 每次循环下标的增数;
$show : boolean型。决定是否对于这块进行显示。默认为true;
<{section}>的属性;
index:循环下标。默认为0;
index_prev:当前下标的上一个值,默认为-1;
index_next:当前下标的下一个值,默认为1;
first:是否为第一下循环;
last:是否为最后一个循环;
iteration:循环个数;
rownum:当前行号,iteration的别名;
loop:最后一个循环号。Section的循环次数;
show:是否显示;
1
2
3
4
5
6
|
<{section loop= $News }>
新闻编号:<{ $News [loop].newID}><br>
新闻内容:<{ $News [loop].newTitle}><br>
<{sectionelse}>
I am sorry
<{/section}>
|
if用法:
1
2
3
4
5
6
7
|
{ if $list [row].name eq "1" }
星期1
{ elseif $list [row].name== "2" }
星期2
{ else }
默认
{/ if }
|
4. smarty 系统变量
{* 显示URL中的page值($_GET)http://www.example.com/index.php?page=foo *}
{$smarty.get.page}
{* 显示来自一个表单的"page"变量($_POST['page'])*}
{$smarty.post.page}
{* 显示COOKIE变量"username"的值($_COOKIE['username'])*}
{$smarty.cookies.username}
{* 显示服务器变量"SERVER_NAME"($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}
{$smarty.server.PHP_SELF}
{$smarty.server.SCRIPT_NAME}
{* 显示系统环境变量"PATH" *}
{$smarty.env.PATH}
{* 显示PHP会话变量"id"($_SESSION['id'])*}
{$smarty.session.id}
{* 显示变量"username",不论来自get/post/cookies/server/env *}
{$smarty.request.username}
$smarty}保留变量可以被用于访问一些特殊的模板变量,以下是全部页面请求变量。
以下是访问页面请求变量诸如get,post,cookies,server,enviroment和session变量的例子. 例如{$smarty.server.SERVER_NAME}取得服务器变量,{$smarty.env.PATH}取得系统环境变量path,{$smarty.request.username}取得get/post/cookies/server/env的复合变量。
{$smarty.now}变量用于访问当前时间戳.
可以用 date_format调节器格式化输出. 例如{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
{$smarty.const}
你可以直接访问PHP常量. 例如{$smarty.const._MY_CONST_VAL}
{$smarty.capture}
可以通过{capture}..{/capture}结构 截取的输出可以使用{$smarty} 变量访问.
{$smarty.config}
{$smarty}变量 可以访问已经加载的config变量.
例如 {$smarty.config.foo}就可以表示 {#foo#}.
{$smarty.section}, {$smarty.foreach}
{$smarty} 变量可以访问'section'和'foreach'循环的属性.
{$smarty.template}
显示当前被处理的模板的名字.
{$smarty.version}
显示smarty模板的版本
{$smarty.ldelim}
显示左分隔符
{$smarty.rdelim}
显示右分隔符$smarty}保留变量可以被用于访问一些特殊的模板变量,以下是全部页面请求变量。
以下是访问页面请求变量诸如get,post,cookies,server,enviroment和session变量的例子. 例如{$smarty.server.SERVER_NAME}取得服务器变量,{$smarty.env.PATH}取得系统环境变量path,{$smarty.request.username}取得get/post/cookies/server/env的复合变量。
{$smarty.now}变量用于访问当前时间戳.
可以用 date_format调节器格式化输出. 例如{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
{$smarty.const}
你可以直接访问PHP常量. 例如{$smarty.const._MY_CONST_VAL}
{$smarty.capture}
可以通过{capture}..{/capture}结构 截取的输出可以使用{$smarty} 变量访问.
{$smarty.config}
{$smarty}变量 可以访问已经加载的config变量.
例如 {$smarty.config.foo}就可以表示 {#foo#}.
{$smarty.section}, {$smarty.foreach}
{$smarty} 变量可以访问'section'和'foreach'循环的属性.
{$smarty.template}
显示当前被处理的模板的名字.
{$smarty.version}
显示smarty模板的版本
{$smarty.ldelim}
显示左分隔符
{$smarty.rdelim}
显示右分隔符
希望本文所述对大家基于smarty模板的php程序设计有所帮助。