1、视图功能由 \think\View 类配合模板引擎驱动类一起完成,目前的内置模板引擎包含PHP原生模板和Think模板引擎。
2、视图(模板)渲染:渲染模板最常用的是继承基类后调用 fetch 方法。视图(模板)赋值:除了系统变量和配置参数输出无需赋值外,其他变量如果需要在模板中输出必须首先进行模板赋值操作,否则会抛出异常,传递数据到模板主要使用assign 方法。
3、模板技术。模板技术是为前后端分离而生:模板文件+数据==》模板引擎==》html文档,模板技术干的是字符串拼接的体力活(网站开发干的也就是个装修活)。
4、模板引擎。ThinkPHP内置了一个基于XML的性能卓越的模板引擎,这是一个专门为ThinkPHP服务的内置模板引擎,使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签。普通标签:主要用于输出变量、函数过滤和做一些基本的运算操作;XML标签:也称为标签库标签,主要完成一些文件包含、逻辑判断、控制和循环输出,并且可扩展。
(1)模板文件可以同时包含普通标签和标签库标签,标签的定界符都可以配置。
(2)可以给变量输出提供默认值,例如:{$user.nickname|default="一嗔"}。
(3)需要对模板输出使用函数进行过滤或其它处理的时候,可以使用:{$data.name|md5},编译后的结果是:<?php echo htmlentities(md5($data['name'])); ?>。
(4)为了避免出现XSS安全问题,默认的变量输出都会使用 htmlentities 方法进行转义输出。如果不需要转义(例如需要输出html表格等内容),可以使用:{$data.name|raw},编译后的结果是:<?php echo $data['name']; ?>。
(5)模板支持注释功能,例如:{// 这是模板注释内容 }。
(6)runtime/temp下会生成一个编译文件,打开可以看到模板中的{$name}成了<?php echo htmlentities($name); ?>,如果模板这块有问题,查看编译文件是个好方法。改配置后最好清一下编译。
(7)模板布局、继承和包含文件。喜欢继承和包含文件混合用。