tp6默认不支持thinktemplate,需手动安装扩展并配置view.php启用;清空runtime缓存后旧模板才可正常解析。

TP6 默认不支持 ThinkTemplate,旧模板直接报错
TP6 默认使用原生 PHP 模板引擎(type => 'php'),所有 {volist}、{if}、{include} 等 ThinkPHP 5.1 的标签都会原样输出或触发解析异常。这不是“没生效”,而是根本没进解析流程——引擎压根不认识这些语法。
常见错误现象包括:
- 页面显示
{volist name="list"}...{/volist}原文,而非渲染列表 - 报错
Parse error: syntax error, unexpected '{'(PHP 引擎试图执行模板里的大括号) -
{__ROOT__}或{:url('index')}变成纯文本,链接失效
必须显式切换回 ThinkTemplate 引擎才能兼容旧模板,不能指望“默认兼容”。
启用 think-template 扩展并配置 view.php
TP6.0+ 不再内置 ThinkTemplate,需手动安装并配置。这一步漏掉,后续全白忙。
执行命令安装:
composer require topthink/think-template
然后修改 config/view.php,确保关键项如下:
'type' => 'think',
'view_path' => '',
'view_suffix' => 'html',
'think_template' => [
'strip_space' => true,
'tpl_deny_php' => false, // 若旧模板含 {php} 标签才需开启(不推荐)
],
注意:'type' => 'think' 是唯一生效开关;'view_suffix' 要和你模板文件后缀一致(如 .html);strip_space 开启可避免空格导致的布局错乱。
Twig 和 ThinkTemplate 是互斥方案,别混用
标题里说“TP6 默认改用 Twig”,这是常见误解——TP6 默认既不配 Twig,也不配 ThinkTemplate,它默认就是原生 PHP 模板。所谓“改用 Twig”,是你自己额外集成的第三方方案,和 ThinkTemplate 完全无关。
如果你已集成 Twig(比如通过 twig/twig + 自定义 Twig.php),那旧模板(.html 文件含 {volist})根本不会被 Twig 加载——Twig 只认 .twig 后缀和 {% for %} 语法。此时有两种选择:
- 全部重写模板为 Twig 语法(
{% for item in list %}),放弃旧模板 - 停用 Twig,按上一步启用
think-template,继续用原有 .html 模板
没有第三种“自动桥接”方式。强行在同一个项目里同时注册两种引擎,会导致视图路径冲突、缓存混乱、变量作用域错乱。
升级时最易忽略的 runtime 缓存残留
哪怕你正确配置了 'type' => 'think',旧模板仍可能空白或部分失效——90% 是因为 runtime/Temp/ 目录下残留了 TP5.1 编译生成的哈希映射表,TP6 会误读并跳过新引擎初始化。
必须清空两个目录:
-
runtime/Cache/(编译后的 PHP 模板文件) -
runtime/Temp/(ThinkTemplate 的模板哈希索引)
Windows 用户别只删 Cache 下的子文件夹,要进到 Temp 里把所有文件和子目录彻底清空。Linux/macOS 用:rm -rf runtime/Cache/* runtime/Temp/*
这步做完,再访问页面,模板才会真正走 ThinkTemplate 编译流程。否则你会反复怀疑配置写错了,其实只是缓存骗了你。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











