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 相关文章推荐
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
PHP基础知识回顾
Aug 16 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
php blowfish加密解密算法
Jul 02 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
php 中奖概率算法实现代码
Jan 25 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 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模板引擎技术简单实现
2016/03/15 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
Javascript 继承机制实例
2009/08/12 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
Tensorflow累加的实现案例
2020/02/05 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
介绍一下linux文件系统分配策略
2013/02/25 面试题
军训拉歌口号
2014/06/13 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书