本文详细剖析了smarty模板的使用方法,对于学习smarty的朋友有一定的参考价值。详情如下:

一、模板中的注释

每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的。

用到的web前台开发的语言和原来的完全一样,注释也没有变化。

Smarty注释语法是'左结束符变量值*'和'*右结束符变量值',在这两个定界符之间的内容都是注释内容,可以包含一行或多行,并且用户浏览网页查看原代码时不会看到注释,它只是模板内在的注释,以下是注释的例子。

$smarty->left_lelimiter = '

$smarty->right_delimiter = '}>';

注释:

二、模板中变量声明

在Smarty中一切以变量为主,所有的呈现逻辑都让模板自行控制。有几种不同类型的变量,变量的类型取决于它的前缀是什么符号或者被什么符号包围。变量可以直接被输出或者作业函数属性和修饰符的参数或者用于内部的条件表达式等

如果在Smarty模板中输出从php中分配的变量,需要在变量前面加$符号并用定界符将它括起来,命名方式和php的变量命名方式一样,并且定界标示符号又有点像是php中的<?php ?>(事实上它们确实会被替换成这个)

三、模板中输出从php分配的变量

在Smarty模板中经常使用的变量有两种:一是从php中分配的变量;另一种是从配置文件中读取的变量

注意:模板中只能输出从php中分配的变量,不能在模板中为这些变量重新赋值,变量都是全域的,只要分配一次就可以了,如果分配两次以上的话,变量内容会以最后分配的为主

Smarty中提供的foreach或section语句用于遍历输出数组中的每个元素,索引数组和关联数组在模板中输出的方式略有不同,索引数组在模板中的访问方式和在php脚本中的引用是一样的,关联数组中元素在模板中指定的方式是使用'.'访问的。

在模板中访问对象和php脚本中的方式一样,都是通过'->'这个运算符完成的。

四、Smarty 模板中变量的数学计算

在模板中变量不能直接赋值,但可以参与数学运算,只要在php脚本中可以执行的数学运算都可以在模板中应用,如下所示:

bar - $bar[1] * $foo->bar - 3 * 7}>

在Smarty模板中可以识别嵌入在双引号中的变量,但有的变量必须用反引号'`'(此符号和'~'在同一个键上)包住,如下所示:

五、smarty模板使用示例:

第1步:加载Smarty模板引擎,如:require 'libs/Smarty.class.php'

第2步:创建Smarty对象,如:$smarty = new Smarty();

第3步:修改Smarty默认行为,如:开启缓存、模板的存放路径等

第4步:将程序中取得的数据通过Smarty对象的assign()方法赋值给模板中相应的变量

第5步:用Smarty对象的display()方法将模板内容输出

assign()方法:

这个方法用来给模板中的变量赋值,使用比较容易

原型:void assign(string varname,mixed var)

这个方法可以将php所支持的类型数据赋值给模板变量包含数组和对象

使用方式有如下两种:

//指定一对'名称/数值'

$smarty->assign('question','你好吗');

$smarty->assign('answer','不怎么好');

//指定包含'名称/数值'

$smarty->assign(array('question' => '你好吗','answer' => '不怎么好'));//这种方式比较少用

display()方法:

基于Smarty的脚本中必须用到这个方法,而且一个脚本中只能使用一次,它负责获取和显示由Smarty引擎引用的模板

原型:var display(string template[,string cache_id][,string compile_id])

参数一:template是必选的,指定一个合法的模板资源的类型和路径

参数二:cache_id指定一个缓存标识符的名称

参数三:compile_id在维护一个页面多个缓存时使用

使用方法如下

$smarty->display('tpl/template_dir/template.html');

简单实例:

1、libs:是Smarty类库

2、tpl/cache_dir:存放缓存模板

3、tpl/compile_dir:存放编译后模板文件

4、tpl/config_dir:存放特殊配置文件

5、tpl/template_dir:存放模板文件

6、smarty.php文件里 new 出了一个 Smarty类对象,并设定各对象的属性值,如下代码

require 'libs/Smarty.class.php';//加载Smarty.class.php文件

define('SITE_ROOT','./tpl/');//定义一个常量

$tpl = new Smarty();

$tpl->template_dir = SITE_ROOT . 'template_dir';//存模板文件

$tpl->compile_dir = SITE_ROOT . 'compile_dir';//存编译过的模板文件

$tpl->config_dir = SITE_ROOT . 'config_dir';//存特殊配置文件

$tpl->cache_dir = SITE_ROOT . 'cache_dir';//存Smarty缓存文件

$tpl->caching = 1;//启用缓存

$tpl->cache_lifetime = 60*60*24;//缓存时间1天

$tpl->left_delimiter = '

$tpl->right_delimiter = '}>';//右结束符

7、index.php文件 首页代码如下

require 'smarty.php';

$tpl->assign('title','title测试');

$tpl->assign('content','content测试');

$tpl->display('template.html');

8、tpl/template_dir/template.html 这是一个模板文件 代码如下

PHP Smarty 模板,php之Smarty模板使用方法示例详解相关推荐

  1. 七、Vue cli详解学习笔记——什么是Vue cli ,Vue cli的使用(安装,拉取2.x模板,初始化项目),Vue cli2详解,Runtime-Compiler和Runtime-only区别

    一.什么是Vue CLI 如果你只是简单写几个Vue的Demo程序, 那么你不需要Vue CLI. 如果你在开发大型项目, 那么你需要, 并且必然需要使用Vue CLI 使用Vue.js开发大型应用时 ...

  2. dede 模板 php sql,dedecms模板中使用{dede:sql=””}实现分页功能详解

    相信很多使用织梦dedecms的朋友在网上查找关于dede:sql标签进行分页的解决方案时都不尽如人意,尤其是在列表页使用dede:sql调用外部数据(所谓调用外部数据就是指在后台只是创建个空栏目,然 ...

  3. css修改代码,网站模板修改中常用到的CSS代码详解

    在上一篇文章中,提到了一些修改网站模板中常用到的方法,工具.但其中也牵涉到不到关于CSS样式表的一些知识,对于这些知识,缺乏的还占大多数,今天我就将常用的一些CSS样式表语法整理一下,发出来给大家,希 ...

  4. win8计算机配置管理模板,win8.1用户帐户配置管理图文详解

    win8.1账户可以分为管理员账户.用户自建账户和来宾账户三大类;下面我们一起来学习一下win8.1用户账户配置管理图文教程吧! 用户账户管理界面 想对Win8.1的用户账户进行全面管理,最好通过&q ...

  5. v9php 碎片信息,PHPCMS V9模板中的常用变量、碎片代码详解

    前面是变量,后面是调用变量的解释 {pc:content action="position"posid="12" thumb="1" ord ...

  6. Django模板中models.py文件的时间字段详解

    DateTimeField和DateField和TimeField存储的内容分别对应datetime,date,time date = models.DateTimeField(null=True, ...

  7. smarty中使用php函数,在smarty模板中使用PHP函数的方法

    在smarty模板中使用PHP函数的方法 发布于 2014-11-23 22:57:51 | 174 次阅读 | 评论: 0 | 来源: 网友投递 Smarty模板引擎Smarty是一个使用PHP写出 ...

  8. phpcms v9中模板标签和联动菜单的使用方法详解

    2019独角兽企业重金招聘Python工程师标准>>> pc:content action="position" posid="9" orde ...

  9. 数据结构图文解析之:哈夫曼树与哈夫曼编码详解及C++模板实现

    0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...

最新文章

  1. AngularJS鼠标进入划出事件
  2. 数牍科技完成超3亿元A轮融资,隐私工程守护数据全生命周期流通协作
  3. AngularJS的稍复杂form验证
  4. LeetCode 410——分割数组的最大值
  5. Maven定制化打包后的包名(加入时间戳)
  6. SQL语句大全(转)
  7. rabbitmq 消息长度_Spring Boot教程(29) – RabbitMQ必备基础
  8. HTML 转义字符表
  9. idea 添加格式化json插件GsonFormat 和快速解析第三方返回json数据
  10. 微信小程序云开发问题篇3_云数据库导入Excel数据(xls转为json导入之后报错:导入数据库失败, Error: Poll error, 导入数据任务(id:1431654)异常...)
  11. 汇川机器人视觉定位通讯程序
  12. 从MySQL数据库中查询某个数据库某个表中字段
  13. [ROS学习笔记1]在RViz中查看激光雷达数据
  14. (必背)二叉树的前中后序遍历(利用栈)
  15. arcgis安装后重启提示 flexnet vendor daemon 交互式服务检测
  16. STM32—sg90编程
  17. 计算机专业期末背书,“期末最惨专业排行榜”,这十五个专业的遭遇简直惨绝人寰!...
  18. xt6使用技巧_凯迪拉克XT6中控屏幕功能使用操作图解
  19. 华为公有云认证培训认证体系- HCIA,HCIP ,HCIE
  20. 使用crontab定时执行脚本时别忘了输出重定向

热门文章

  1. Java拖拽排序工具类
  2. 门店销售干货 | 4种不同类型的顾客VS销售技巧,直接套用!
  3. [博客技巧]用World Sunlight Map装点你的博客!
  4. C++:关于string
  5. 新品发布 | 纳芯微推出集成隔离电源的隔离485接口和隔离CAN接口芯片NSiP83086 / NSiP1042
  6. 智能会计成就价值财务
  7. 【C语言】a数组中有8个元素,第6个元素后第3个元素移到开头
  8. vue导出execl表格(宽度自适应)
  9. vue前端框架应用案例(一)实现简单的加法页面
  10. vue+element-ui搭建简易的后台管理系统页面布局