PHP头条
热点:

ThinkPHP模板使用指南


ThinkPHP模板运用指南

使用例子:

{$webTitle|md5|strtoupper|substr=0,3}

编译后的PHP代码就是:

注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数使用的结果,如果你的变量并不是函数的第一个参数,需要使用定位符号,例如:

{$create_time|date="y-m-d",###}

编译后的PHP是:

函数的使用没有个数限制,但是可以允许配置TMPL_DENY_FUNC_LIST定义禁用函数列表,系统默认禁用了exit和echo函数,以防止破坏模板输出,我们也可以增加额外的定义,例如:

TMPL_DENY_FUNC_LIST=>"echo,exit,halt"

多个函数之间使用半角逗号分隔即可。

?

并且还提供了在模板文件中直接调用函数的快捷方法,无需通过模板变量,包括两种方式:

1、执行方法并输出返回值:

格式:{:function(…)}

例如,输出U方法的返回值:

{:U('User/insert')}

编译后的PHP代码是

?

2、执行方法但不输出:

格式:{~function(…)}

例如,调用say_hello函数:

{~say_hello('ThinkPHP')}

编译后的PHP代码是:


系统变量
除了常规变量的输出外,模板引擎还支持系统变量和系统常量、以及系统特殊变量的输出。它们的输出不需要事先赋值给某个模板变量。系统变量的输出必须以$Think. 打头,并且仍然可以支持使用函数。

1、系统变量:包括server、session、post、get、request、cookie

{$Think.server.script_name } // 输出$_SERVER变量

{$Think.session.session_id|md5 } // 输出$_SESSION变量

{$Think.get.pageNumber } // 输出$_GET变量

{$Think.cookie.name } // 输出$_COOKIE变量

支持输出$_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE变量。后面的server、cookie、config不区分大小写,但是变量区分大小写。例如:

{$Think.server.script_name }和{$Think.SERVER.script_name }等效

SESSION 、COOKIE还支持二维数组的输出,例如:

{$Think.CONFIG.user.user_name}

{$Think.session.user.user_name}

系统不支持三维以上的数组输出,请使用下面的方式输出。

?

以上方式还可以写成:

{$_SERVER.script_name } // 输出$_SERVER变量

{$_SESSION.session_id|md5 } // 输出$_SESSION变量

{$_GET.pageNumber } // 输出$_GET变量

{$_COOKIE.name } // 输出$_COOKIE变量

?

2、系统常量 :使用$Think.const 输出

{$Think.const.__SELF__ }

{$Think.const.MODULE_NAME }

或者直接使用

{$Think.__SELF__ }

{$Think.MODULE_NAME }

?

3、特殊变量 :由ThinkPHP系统内部定义的常量

{$Think.version } //版本

{$Think.now } //现在时间

{$Think.template|basename } //模板页面

{$Think.LDELIM } //模板标签起始符号

{$Think.RDELIM } //模板标签结束符号

?

4、配置参数 :输出项目的配置参数值

{$Think.config.db_charset}

输出的值和C('db_charset') 的返回结果是一样的。

也可以输出二维的配置参数,例如:

{$Think.config.user.user_name}

?

5、语言变量:输出项目的当前语言定义值

{$Think.lang.page_error}

输出的值和L('page_error')的返回结果是一样的。
快捷输出
为了使得模板定义更加简洁,系统还支持一些常用的变量输出快捷标签,包括:

} //输出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} 等效

如果需要输出二维数组,例如 要输出$_SESSION[‘var1’][‘var2’]的值 快捷输出可以使用:

} 的方式

同理

{#var1.var2}

可以输出 $_COOKIE[‘var1’][‘var2’]的值。

必须注意的是:快捷输出的变量不支持函数的使用。

所以,下面的用法是错误的:

{#var|strlen}
默认值输出
如果输出的模板变量没有值,但是我们需要在显示的时候赋予一个默认值的话,可以使用default语法,格式:

{$变量|default="默认值"}

这里的default不是函数,而是系统的一个语法规则,例如:

{$user.nickname|default="这家伙很懒,什么也没留下"}

对系统变量的输出也可以支持默认值,例如:

{$Think.post.name|default="名称为空"}

因为快捷输出不支持使用函数,所以也不支持默认值,默认值支持Html语法。
包含文件
可以使用Include标签来包含外部的模板文件,使用方法如下:

1、 使用完整文件名包含

格式:

例如:

这种情况下,模板文件名必须包含后缀。使用完整文件名包含的时候,特别要注意文件包含指的是服务器端包含,而不是包含一个URL地址,也就是说file参数的写法是服务器端的路径,如果使用相对路径的话,是基于项目的入口文件位置。

?

2、包含当前模块的其他操作模板文件

格式:

例如 导入当前模块下面的read操作模版:

操作模板无需带后缀。

?

3、 包含其他模块的操作模板

格式:

例如,包含Public模块的header操作模版:

?

4、包含其他模板主题的模块操作模板

格式:

例如,包含blue主题的User模块的read操作模版:

?

5、 用变量控制要导入的模版

格式:

例如

给$tplName赋不同的值就可以包含不同的模板文件,变量的值的用法和上面的用法相同。

?

6、使用快捷方式包含文件

格式:{include:模板文件规则}

其中的模板文件规则可以使用上面提到的5种方式。

注意:由于模板解析的特点,从入口模板开始解析,如果外部模板有所更改,模板引擎并不会重新编译模板,除非缓存已经过期。如果修改了包含的外部模板文件后,需要把模块的缓存目录清空,否则无法生效。
导入文件
传统方式的导入外部JS和CSS文件的方法是直接在模板文件使用:

相关文章

PHP之友评论

今天推荐