smarty汇总

Smarty:模板技术

实现功能:前后分离。

原理:主要通过Smarty核心类实现,调用display方法,将模板文件读取,用正则进行替换,替换完保存到临时文 件,将临时文件加载到当前页面。

配置文件(入口文件):对Smarty类进行实例化,设置文件的保存路径

如果在页面使用Smarty模板,需要将配置文件引入到当前页面。

浏览器要访问的页面是后台页面(.php),最终在浏览器看到的页面是模板页面(.html或.tpl)

模板里面的文件路径:基于.php文件的相对路径,如果不使用相对路径可以使用绝对路径。

模板里面显示变量:

1.变量要写在Smarty标记之间,变量名以$开头

<{$test}>

2.支持所有类的数据,包括数组(关联数组),对象

关联数组在模板显示的时候,除了可以使用php语法之外,还支持点语法 <{$attr.name}>

模板里面读取配置文件

1.将配置文件加载到当前页面
<{config_load file='test.conf'}>

2.读取配置中的内容
<{#color#}>

3.如果配置文件中分了块,怎么读某一块的配置
<{config_load file='test.conf' section='块名'}>

Smarty保留变量

$smarty.const 读取常量 例如:CSS,JS,图片的存放路口

变量调节器:

关键字:modifier

1.系统自带的变量调节器:转大写 转小写 首字母大写 截取字符串 拼接字符串
2.自定义变量调节器:

变量调节器存放目录下新建文件:modifier.调节器名称.php
在该文件里面新建一个方法:function smarty_modifier_调节器名($str){}
$str参数代表调用该调节器的变量
最后该方法要有一个返回值

函数:

关键字:function普通函数,block块函数

1.系统自带的函数:if foreach

<{if 条件}>
满足条件输出内容
<{else}>
不满足条件输出内容
<{/if}>

<{if 条件1}>
满足条件输出内容
<{elseif 条件2}>
不满足条件1满足条件2执行
<{/if}>

比较的时候,有备用词可以使用

<{foreach $shuzu as $v}>

$v@index 从0开始的索引
$v@first 代表是第一个循环的
$v@last 代表是最后一个循环的

<{/foreach}>

2.自定义函数

找到存放函数插件的文件夹在里面新建文件:function.函数名.php (block.函数名.php)
在该文件里面新建一个方法:function smarty_function_函数名($args){}
function smarty_block_函数名($args,$nr,$smarty,$bs){}

参数$args:调用该函数传入的属性关联参数
参数$nr:block块之间所夹的内容
参数$smarty:对象
参数$bs:是否是第一次调用(开始标记里面调用)

该方法最终有返回值

模板继承:

extends block

父模板:一般用来放网页的头和尾
需要预留一定的区域来让子页面修改替换
使用<{block name='neirong'}><{/block}>
一般来说,父模板里面至少预留两块区域,其中一块是在head里面 另一块是在body里面

子页面:一般继承父模板放该页面实现的功能
<{extends file=''}>
完善替换父模板中预留的区域:
<{block name='neirong'}><{block}>

缓存:

做法:
1.定义一个缓存文件存放的路径
2.判断缓存文件是否存在或者是否过期
3.如果文件不存在或过期:
开启内存缓存ob_start();
取内存中的内容ob_get_contents();
将内容存放到缓存文件中file_put_contents();
关闭内存缓存ob_flush();
4.如果文件存在或没有过期:
将缓存文件引入当前页面include();

上一篇:WebApi 接口测试工具:WebApiTestClient


下一篇:Linq To Entities 及其相关(进阶)