smarty中常用方法实例总结

本文实例总结了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程序设计有所帮助。

(0)

相关推荐

  • Smarty最简单实现列表奇偶变色的方法

    本文实例讲述了Smarty最简单实现列表奇偶变色的方法.分享给大家供大家参考.具体如下: 最近在换模板的过程中遇到过一个问题:列表页隔行换色,本来想用程序实现的,但在网上发现smarty模板中有一个很方便的方法,特分享一下: {section name=cat loop=$list} <tr bgcolor="{cycle values="#FFFFFF,#CCCCCC"}"> <td>{$list[cat].id}</td> &

  • php实现smarty模板无限极分类的方法

    本文实例讲述了php实现smarty模板无限极分类的方法.分享给大家供大家参考,具体如下: <?php $conn = mysql_connect("localhost","admin","admin"); mysql_select_db("people_shop",$conn); mysql_query("SET NAMES 'UTF-8'"); $class_arr=array(); $sql =

  • smarty简单应用实例

    本文讲述了smarty简单应用实例.分享给大家供大家参考,具体如下: <?php require 'smarty/libs/Smarty.class.php'; $smarty = new Smarty; $smarty->template_dir="smarty/templates/templates"; $smarty->compile_dir="smarty/templates/templates_c"; $smarty->config

  • Ajax+smarty技术实现无刷新分页

    这里运用Smarty模板,更简单 本文主要的技术:AJAX,PHP,Smarty,另外自己封装了一个很简单的类 类: (function(){ function $(id) { return document.getElementById(id); } $.init=function() { try{return new XMLHttpRequest();}catch(e){}; try{return new ActiveXObject('Microsoft.XMLHTTP');}catch(e

  • Smarty foreach控制循环次数的一些方法

    1.在 smarty 中数组是经常会用到的,循环遍历数组用 section 或者 foreach ,如何得到数组长度或者判断一个数组个数呢?可以用{$array| count} 来试试. 2. 复制代码 代码如下: {foreach from=$variable key=key name=name iteam=value} {$variable|@count}     // 获取数组长度 {$smarty.foreach.loop.index}    // 获取当前循环数组元素下标,以0开始 {

  • CodeIgniter中使用Smarty3基本配置

    一.创建Smarty类库 1.将smarty的libs文件复制到libraries下(这里我重命名为smarty) 2.新建Cismarty.php文件.(符合文件规范,文件名的首字母和class名的首字母大写,但是控制器引用加载时,类名/文件名不需要大写) Cismarty.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); require(APPPATH . 'libraries/smart

  • Smarty使用自定义资源的方法

    本文实例讲述了Smarty使用自定义资源的方法.分享给大家供大家参考.具体如下: <?php // put these function somewhere in your application function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj) { // do database call here to fetch your template, // populating $tpl_source $sq

  • smarty高级特性之过滤器的使用方法

    本文实例分析了smarty高级特性之过滤器的使用方法.分享给大家供大家参考,具体如下: 高级特性中过滤器的使用 1.预过滤器 function remove_dw_comments($tpl_source, &$smarty) { return preg_replace("/<!--#.*-->/U","",$tpl_source); //去除原tpl文件中的注释,使其在编译后的文件中不显示 } //注册预过滤器 $smarty->regi

  • yii,CI,yaf框架+smarty模板使用方法

    本文实例讲述了yii,CI,yaf框架+smarty模板使用方法.分享给大家供大家参考,具体如下: 最近折腾了框架的性能测试,其中需要测试各个模板跟smarty配合的性能,所以折腾了一桶,现总结一下.之前已经写过kohana框架+smarty模板,这里不再重复了. 一.yii框架+smarty模板 yii是覆盖了viewRenderer组件. 1.1,下载yii框架并解压,下载smarty框架并解压,将smarty/libs文件夹拷到yii框架application/protected/vend

  • Zend Framework实现Zend_View集成Smarty模板系统的方法

    本文实例讲述了Zend Framework实现Zend_View集成Smarty模板系统的方法.分享给大家供大家参考,具体如下: Zend_View抽象出了Zend_View_Interface,可以让我们集成不同的视图解决方案,例如可以集成smarty.要在zend中使用其他视图系统作为视图,只要实现Zend_View_Interface接口即可. Zend_View_Interface的接口定义: <?php /** * Interface class for Zend_View compa

  • smarty学习笔记之常见代码段用法总结

    本文实例讲述了smarty常见代码段.分享给大家供大家参考,具体如下: 1. <select > {html_options values=$cust_ids selected=$customer_id output=$cust_names} </select> 说明:生成下拉菜单.values=一个数组,数组元素为列表值 selected=一个值,这个是默认的列 表值 output=一个数组,数组元素为显示的列表值 {html_checkboxes values=$cust_id

  • PHP文件缓存smarty模板应用实例分析

    本文实例分析了PHP文件缓存smarty模板应用.分享给大家供大家参考,具体如下: 一.使用缓存 要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可. 使用cache_lefetime指定缓存生存时间,单位为秒 要对相同页面生成多个不同的缓存,在display或fetch中加入第二参数cache_id,如: $smarty->display('index.tpl',$my_cache_id); 此特性可用于对不同的$_GET进行不同的缓存   二.清除缓存

  • smarty高级特性之对象的使用方法

    本文实例讲述了smarty高级特性之对象的使用方法.分享给大家供大家参考,具体如下: <?php include_once('smarty.inc.php'); class Dog{ public $name; public function sayHello(){ echo 'hello'; } } $dog1=new Dog(); $dog1->name="first dog"; $smarty->assign("dog",$dog1); $s

  • Codeigniter中集成smarty和adodb的方法

    本文实例讲述了Codeigniter中集成smarty和adodb的方法.分享给大家供大家参考,具体如下: 在CodeIgniter中要写自己的库,就需要写两个文件,一个是在application/init下面的init_myclass.php文件(如果没有init目录,自己创建).另外一个就是在application/libraries目录下创建myclass.php文件. 这里myclass是你的类名.一些规则大家看手册就好了,我这里直接就说步骤了. 1)在application/libra

随机推荐