ThinkPHP内置了一个基于XML的性能卓越的模板引擎ThinkTemplate,这是一个专门为ThinkPHP服务的内置模板引擎。ThinkTemplate是一个使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。
模板?
模板是可复用代码的衍生概念。
模板分离HTML部分,程序里体现的是完全的业务逻辑。
模板可以轻松实现更换网站皮肤,进行改版;方便制作不同语言版本。
模板提高开发速度和性能,使修改、维护更方便。
模板支持缓存技术,实现网页的静态化
模板变量
在Action中使用assign方法可以给模板变量赋值
$name = 'ThinkPHP';
$this->assign('name',$name);
使用内置的模板引擎输出变量,只需要在模版文件使用:
{$name}
模板编译后的结果就是
<?php echo($name);?>
ThinkPHP变量来源
从PHP分配的变量,使用assign分配
系统变量
路径替换变量
模板中使用变量
{$name}
{$user['name']} 、{$user['sub']['name']}
{$user:name} 、{$user:sub:name}
{$user.name} 、{$user.sub.name} //TMPL_VAR_IDENTIFY
{$Think.server.script_name }
{$Think.get.pageNumber }
变量输出快捷标签
为了使得模板定义更加简洁
{@var} //输出Session变量 和{$Think.session.var}
等效
{#var} //输出Cookie变量 和{$Think.cookie.var}
等效
{&var} //输出配置参数 和{$Think.config.var}
等效
{%var} //输出语言变量 和{$Think.lang.var}
等效
{.var} //输出GET变量 和{$Think.get.var}
等效
{^var} //输出POST变量 和{$Think.post.var}
等效
{*var} //输出常量和{$Think.const.var}
等效
{@var1.var2}//输出$_SESSION[‘var1’][‘var2’]
{#var1.var2}//输出$_COOKIE[‘var1’][‘var2’]
默认的替换规则有
../Public: 会被替换成当前项目的公共模板目录 通常是/项目目录/Tpl/default/Public/
__PUBLIC__:会被替换成当前网站的公共目录 通常是/Public/
__TMPL__: 会替换成项目的模板目录 通常是/项目目录/Tpl/default/
__ROOT__: 会替换成当前网站的地址(不含域名)
__APP__: 会替换成当前项目的URL地址 (不含域名)
__URL__: 会替换成当前模块的URL地址(不含域名)
__ACTION__:会替换成当前操作的URL地址 (不含域名)
__SELF__: 会替换成当前的页面URL
注意这些特殊的字符串是严格区别大小写的,并且可以更改或者增加的,配置文件中配置TMPL_PARSE_STRING就可以完成
变量使用函数
ThinkPHP内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用。
模板变量的函数调用格式为:
{$varname|function1|function2=arg1,arg2,###}
{$webTitle|md5|strtoupper|substr=0,3}
说明:
{ 和$
符号之间不能有空格 ,函数之间用|分割
###表示模板变量本身的参数位置
必须注意的是:快捷输出的变量不支持函数的使用。