下午笔记图解smarty模板引擎_第1页
下午笔记图解smarty模板引擎_第2页
下午笔记图解smarty模板引擎_第3页
下午笔记图解smarty模板引擎_第4页
下午笔记图解smarty模板引擎_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Smarty 模板引擎模板引擎介绍2第 1 章1.1模板引擎的基本介绍-示意图2第 1 章模板引擎介绍1.1模板引擎的基本介绍-示意图l介绍:实际开发的时候,公司是明确的分工的,php 程序员主要负责 php 代码(业务逻辑相关),web 前端程序员主要负责(html、css、JavaScript)(让页面更加美观用户体验更好)l示意图:l现在这样编写代码:需求:商品列表并显示2.goods_list.php,php 程序员写的代码3.goods_temp.php,web 前端程序员写的代码上面的写法有如下不足之处:(1) web 前端不懂 PHP 的语法,的成本就比较高(2) 上面的写法也不

2、符合目前最流行的 MVC 设计模式如何解决上面的问题:使用模板引擎帮我们解决上面的问题l 模板引擎原理示意图:Html 页面先使用占位符代替,然后模板引擎再从 PHP 文件最终生成一个编译文件,使用真实数据替换占位符真实数据,并第 2 章smarty 基本介绍Smarty 模板语法2.1l介绍:目前模板引擎技术有很多,Laravel 框架(blade 模板引擎)、框架(自己的模板引擎技术)、Smarty 模板引擎技术,虽然有很多模板引擎技术,但是原理都是一样的,所以我们以 smaty 为例学习l如何使用::htttp:/ 大家直接使用我的最新的版本就可以了解压之后,libs 目录就是 smar

3、ty 的们的项目中代码,通常重命名为 smarty 再拷贝到我使用的话,直接加载 smarty 里面的 Smarty.class.php 并实例化1. template.php 模板文件的代码:最终生成的编译文件会默认保存到 templates_c 这个目录(后期可以修改)2.2Smarty 模板中变量来源l 介绍:Smarty 中的模板中变量的来源,有如下几种:n smarty 分配(assign)过来的真实数据上面已经举例说明,这里不再粘代码n 配置文件数据什么是配置文件?配置文件用来保存一些有规范的、可以在多个文件中公用的数据例如:需要在 html 文件中显示图片:如果将来图片的地址发生

4、变化了,需要找到所有的 img,修改 src 地址,这样就会很繁琐,所以我们可以将图片的地址保存到配置文件中,将来在 html 里面使用配置文件的地址,将来有任何变化,只需要修改配置文件即可首先,定义一个配置文件,保存图片的地址说明:由于该配置文件,我们点就是那个文件直接,所以相对的路径应该是被谁引入,出发其次,在 html 模板中要想使用配置文件,需要先加载配置文件最后,这些文件都会被 PHP 文件加载过去测试一把:错误意思:无法加载到 img.conf 文件,需要告诉 smarty 去哪里加载这个配置文件通过 smarty 对象的 setConfigDir() ,设置从哪个目录、加载配置文

5、件n smarty 保留的变量这些变量是 smarty 保留的、内置的,不需要$smarty.now,用来获得当前的时间戳、加载,可以直接使用$smarty.const.常量名,用来获得 PHP 文件中定义的常量$smarty.config,获得配置文件中的配置项$smarty.current_dir ,当前文件所在的目录4.smarty.php 代码:n PHP 请求变量在 html 模板中,还可以获得 PHP 提供的 http 请求是携带的变量、PHP 的环境变量等一下:2.3Smarty 模板中变量调节器l 介绍:变量调节器,就是对模板中的变量进行调节、修饰作用例如:模板中可以使用$sm

6、arty.now获得当前的时间戳,用户看不懂时间戳的,所以我们需要对变量进行修饰,将其转换成日期格式就好了l如何使用:语法:模板变量|修饰器:传递的参数l变量调节器:date_format:将时间戳转换成日期格式capitalize:首字母大写upper:字符串整体大写count_characters:统计字符个数default:默认值如果变量为空、空字符串,就可以使用默认值代替indent:字符缩进参数 1:缩进的字符数量参数 2:默认显示空格,可以指定字符代替escape: 用来转码的,有 2 个参数,默认采用实体转码,可以将其修改为 url 就会采用 url 转码举例说明:如果在模板中,

7、不加任何修饰的话,会输出 hello 这个内容,而且会输出 10 次,这样就很,所以我们要对其内容进行实体转码(将转换成实体符号)除了实体转码,escape 调节器还提供了 url 转码,通常我们在 url 地址栏中传输中文、特殊符号,服务器接收的时候容易出错,所有我们需要对 url 传输的中文、特殊符号进行 url 转码再传输url 转码之后的效果就是这样:truncate,字符串截取参数 1:截取的长度,参数 2:截取之后追加在字符串后面的字符,该追加的字符会被计算在截取的长度之内,例如:2.4Smarty 模板中流程控制语句l介绍:在 html 模板中,可以使用 PHP 的流程控制语句f

8、oreach forif elseifelse include extendsblock literal代码演示:(1)foreach 用来在模板中遍历数组,语法格式:foreach(遍历的数组 as $k=$v)foreachelse当遍历的数组为空的时候执行这里l/foreach代码:(2)for 循环:注意:可以通过 step 属性设置步长值(3)if、elseif、else 的使用(4)include,该实际开发的时候,是用来加载其他的模板文件的头部(导航)、底部(所有),而且每个网页头部、底部都是固定的,所以我们就没有必要在每个页面都写一遍了,我们可以将这些公共的代码(头部的导航、底

9、部的)提取出来,哪里需要哪里 include 即可哪里需要公共的代码,在哪里 include 加载即可(5)模板继承模板继承实现的功能和 include 非常类似,只是模板继承比 include 更加强大include 只是用来加载外部模板文件的,不能修改被加载的文件的代码,而我们的模板继承就可以实现(1)将公共的代码提取到公共的文件(DOCTYPE、head、css 等),然后在公共的模板里面指定哪些地方可以被重写,通过block指定哪些地方可以被重写(2)我们的模板要继承该公共的模板(类似于 include)如果想覆盖、重写公共的模板里面的内容的话,也是通过block重写注意:我们的模板继

10、承公共模板之后,公共模板的内容会覆盖我们的内容(3)block还提供了 2 个参数:append 表示追加在原来内容的后面,prepend追加到原来内容的前面演示一下:最后被 smarty 加载一下(6)literal,用来表示不采用 smarty 的语法去应用场景如下:一下,报如下错误:错误指的是 css 里面的,由于 smarty 的默认的占位符()就是,一看到花括号就去了,由于这里不需要 smarty,所以我们就可以使用literal包起来由于继承的时候,公共模板的内容会覆盖掉我们的主模板的内容,所以通常要将公共的代码都保存到公共的文件中第 3 章Smarty 缓存3.1为什么使用缓存l

11、需求分析:商品的信息,并显示到模板中10.smarty_goods.php10.goods.htmll 分析:上面的代码有如下不足之处,我们通过图例演示由于张三、;李四、王五三个客户端的数据都是一样的,而且每次都要去数据库,所以这个效率是很低的既然知道了原因,我们就应该修改:思路:只要有一个人将商品的信息出来,就保存到服务器的一个文件中,其他用户的,直接让其该缓存的文件即可Smarty 实现缓存:再来一下:测试一下,以后的是不是这个缓存文件呢?修改数据库的数据,查看一下的是否是缓存的数据发现网页中显示的还是缓存的数据3.2局部不缓存l介绍:局部不缓存,指的是中大部分使用缓存了,但是一些局部的地

12、方(商品价格、天气情况、股票价格)不缓存l代码实现:局部不缓存通过模板中的 insert实现的,smarty 看到 insert的时候,永远会执行,即使该页面是缓存的,看到 insert之后还是会执行Insert的使用需要遵循如下规范:规范 1:定义 insert时:name 属性指向的是调用的函数如果传递参数,通过键值对的形式传递规范 2:getPrice 函数文件名规范必须在 smarty/plugins 目录下定义规范 3:文件里面函数名规范smarty_insert_函数名3.3单模板多缓存l 介绍:单模板多缓存,一个模板生成多个缓存文件l 举例演示:先创建一张书籍表:create table book(id int primary key auto_increment,title varchar(32)engine myisamdefault charset utf8;添加几条测试数据:接下来,我在 url 地址栏传递不同的参数,根据参数对应的书名测试一下:不管传递的 id 是几,返回的都是,分析原因:Smarty 在 display 的时候,生成了缓存文件,后面让一个模板生成多个缓存文件呢?的都是该缓存文件,如何需要通过 display 的第二个参数实现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论