模板
thinkphp内置了一个XML的性能卓越的模板引擎,专门为ThinkPhp服务的内置模板引擎,使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。
模板定位
模板文件定义
每个模块的模板文件是独立的,为了对模板文件更加有效的管理,Think PHP对模板文件进行目录划分,默认的模板文件定义规则是:
试图目录/控制器名(小写)/操作名(小写)+模板后缀
默认的试图目录是模块的view目录,框架默认视图文件后缀名是.html(增加方式看以前笔记应该第二个)
模板标签
模板文件可以包含普通标签和标签库标签,标签的定界符都可以重新配置。
普通标签
普通标签用于变量输出和模板注释,普通模板标签默认以左右{}为开始和结束标识,并且在开始标记紧跟标签的定义,如果之间有空格或者换行则被视为非模板标签直接输出,如:
{$name} , {$vo.name} , {$vo.[ 'name ' ]} 都是属于正确的标签
{ $name} , { $vo.name} 则不属于。
要更改普通标签的起始标签和结束标签。(看以前笔记应该是第二个)修改后,对应的{} 需要改成对应修改。
标签库标签
标签库标签可以用于模板变量输出,文件包含,条件控制,循环输出等功能,而且完全可以自己扩展功能,
5.0版本的标签库默认的定界符和普通标签一样使用 { 和 } ,是为了在编辑器里面编辑不至于报错,当然也可以进行修改
系统变量
系统变量的输出
普通的模板变量需要先赋值后才能在模板中输出,但是系统变量则不需要,可以直接在模板中输出,系统变量的输出通常以 { $Think}打头,如
{$Think . server . srever_name} //输出$_SERVER[ ' SERVER_NAME ' ] 变量
{$Think . session . user_id} //输出$_SESSION[ ' user_id ' ] 变量
{$Think . get . pageNumber} //输出$_GET[ ' pageNumber ' ] 变量
{$Think . cookie . name} //输出$_COOKIE[ ' name ' ] 变量
支持输出$_SERVER , $_SESSION ,$_GET ,$_COOKIE ,$ENV , $REQUEST 和 $POST变量。
常量输出
{ $Think . const . APP_PATH } 或者直接使用 { $Think . APP_PATH}
配置输出
{ $Think . config . default_moodle }
{ $Think . config . default_controller }
使用函数
往往会对模板输出变量使用函数,如:
如果函数有多个参数需要调用,则使用:
{$create_time|date="y-m-d",###}
表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是y-m-d
,第二个参数是前面要输出的create_time
变量,因为该变量是第二个参数,因此需要用###标识变量位置,编译后的结果是:
<?php echo (date("y-m-d",$create_time)); ?>
如果前面输出的变量在后面定义的函数的第一个参数,则可以直接使用:
{$data.name|substr=0,3}
表示输出
<?php echo (substr($data['name'],0,3)); ?>
虽然也可以使用:
{$data.name|substr=###,0,3}
但完全没用这个必要。
还可以支持多个函数过滤,多个函数之间用“|”分割即可,例如:
{$name|md5|strtoupper|substr=0,3}
substr这里表示截取前三位
编译后的结果是:
<?php echo (substr(strtoupper(md5($name)),0,3)); ?>
函数会按照从左到右的顺序依次调用。
如果你觉得这样写起来比较麻烦,也可以直接这样写:
{:substr(strtoupper(md5($name)),0,3)}
时间:2018.4.27