smarty中常用方法实例总结
author:一佰互联 2019-04-27   click:152

本文实例总结了smarty中常用方法。分享给大家供大家参考。具体如下:

1. Smarty中foreach的index、iteration的使用

.index包含当前数组索引,从零开始。

index示例

{* 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示例

{* 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:

$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:

$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:是否显示;

<{section loop=$News}>   新闻编号:<{$News[loop].newID}><br>   新闻内容:<{$News[loop].newTitle}><br><{sectionelse}>   I am sorry<{/section}>

if用法:

{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程序设计有所帮助。