smarty中常用方法实例总结


Posted in PHP onAugust 07, 2015

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

PHP 相关文章推荐
一段php加密解密的代码
Oct 09 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
php实现查看邮件是否已被阅读的方法
Dec 03 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
php动态变量定义及使用
Jun 10 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
php实现的http请求封装示例
Nov 08 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
php接口隔离原则实例分析
Nov 11 PHP
laravel框架中间件简单使用方法示例
Jan 25 PHP
swoole锁的机制代码实例讲解
Mar 04 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 #PHP
PHP下载生成的csv文件及问题总结
Aug 06 #PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 #PHP
简单介绍win7下搭建apache+php+mysql开发环境
Aug 06 #PHP
php实现无限级分类(递归方法)
Aug 06 #PHP
PHP常用的排序和查找算法
Aug 06 #PHP
PHP处理会话函数大总结
Aug 05 #PHP
You might like
PHP新手上路(七)
2006/10/09 PHP
mysql 搜索之简单应用
2007/04/27 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
javascript测试题练习代码
2012/10/10 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
js倒计时显示实例
2016/12/11 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
大学生就业推荐信范文
2013/11/29 职场文书
骨干教师个人总结
2015/02/11 职场文书