为什么用 ThinkPHP 模板
ThinkPHP 自带模板引擎,核心价值是把 PHP 逻辑与 HTML 展示分离。默认使用 view 目录存放模板文件,通过 fetch 或 display 方法渲染。相比原生 PHP 混写,模板语法更简洁,也便于前端人员维护。
基础配置与变量输出
在 config/view.php 中可以设置模板引擎、后缀、分隔符等。常用配置项包括 viewsuffix(默认 html)、viewdepr(目录分隔符)。
模板中输出变量使用 {$name} 形式。若变量不存在,可给默认值:{$name|default='游客'}。数组输出用 {$user.name} 或 {$user['name']},对象属性同样支持点语法。
常用过滤与函数
模板支持管道调用函数,例如 {$time|date='Y-m-d'}。注意:自动转义默认开启,输出 HTML 需用 {$content|raw},但要确保内容可信。
循环与判断
循环
{volist name=”list” id=”item”}
{/volist}
volist 支持 offset、length、empty 等属性。简单数组也可用 {foreach}。
判断
{if $status == 1}
已发布
{else /}
草稿
{/if}
条件中可直接使用 PHP 函数,但建议逻辑留在控制器,模板只做简单分支。
模板继承与布局
通过 {extend name="base" /} 继承公共布局,子模板用 {block name="content"}...{/block} 填充。公共部分(头部、底部)抽到 base.html,减少重复代码。
包含子模板用 {include file="header" /},适合复用导航、侧栏等片段。
安全过滤与性能建议
- 默认自动转义能防 XSS,但
raw输出必须谨慎。 - 模板中避免直接执行复杂查询,数据由控制器传入。
- 开启模板编译缓存,生产环境可显著减少解析开销。修改模板后缓存自动更新,无需手动清理。
- 合理使用
literal标签避免与 JS 模板冲突。
常见问题
- 模板不生效:检查
view路径、后缀与缓存目录权限。 - 变量未定义:控制器
assign的名称是否与模板一致。 - 布局继承失败:
extend路径需相对视图目录,且block名称要对应。
掌握以上要点,ThinkPHP 模板足以应对大多数中小型项目。关键是保持模板简洁,把业务逻辑留在模型与控制器层。

