ThinkPHP 6 的 tpl_begin 和 tpl_end 配置在 config/view.php 中修改,需设置为字符串如 '[[', ']]';TP5.1 则在 config/template.php 的 template 数组内配置;修改后必须清空 runtime/view/ 缓存。

ThinkPHP 6 的 tpl_begin 和 tpl_end 配置在哪改
ThinkPHP 6 默认用 { 和 } 作模板标签定界符,和 Vue/React 的插值语法直接冲突。改法不在视图配置文件里硬编码,而是在 config/view.php 中调整两个键:tpl_begin 和 tpl_end。
比如改成 [[ 和 ]]:
return [
'tpl_begin' => '[[',
'tpl_end' => ']]',
];
注意:这两个值必须是字符串,不能是正则或数组;长度不限,但建议保持 2 字符以内,避免解析性能下降。
ThinkPHP 5.1 的 template 配置项怎么设
TP5.1 模板引擎配置在 config/template.php,关键字段是 template 数组里的 tpl_begin 和 tpl_end,和 TP6 语义一致,但位置不同。
立即学习“PHP免费学习笔记(深入)”;
常见错误是只改了 view_replace_str 或试图在控制器里调用 View::config() —— 这些都不生效。必须在配置文件中提前声明:
return [
'template' => [
'tpl_begin' => '<%',
'tpl_end' => '%>',
],
];
改完后务必清空 runtime/view/ 缓存目录,否则旧编译文件仍按原定界符解析,导致语法错误。
定界符修改后 JS 字符串里写 [[ 会误解析吗
会。模板引擎在编译阶段对整个模板文件做全局字符串替换,不区分 HTML、JS 或注释上下文。如果 JS 里写了 let s = '[[id]]';,会被当成模板变量处理,报 Undefined variable: id 错误。
解决方式有三个:
- 用
<script type="text/plain">包裹 JS 代码块(推荐) - 把 JS 写进独立 .js 文件,通过
<script src="..."></script>引入 - 对 JS 中的定界符做转义,如写成
'\[\[id\]\]'(需确认引擎是否支持反斜杠逃逸,默认不支持)
没有“自动跳过 script 标签”的机制,这是模板引擎设计限制,不是配置能绕过的。
Vue 项目里混用 ThinkPHP 模板时最稳妥的定界符选什么
选 <? 和 ?> 或 <{ 和 } 这类 HTML 不合法但 JS 里极少出现的组合。避开 {、{{、[、[[ 等前端高频符号。
例如:
'tpl_begin' => '<{',
'tpl_end' => '}>'
这样既不会触发 Vue 解析器,也不易和 JS 字符串或正则字面量撞车。但要注意:部分编辑器或 Prettier 可能对这种自定义标签标红,属于提示干扰,不影响运行。
真正容易被忽略的是缓存清理时机——改完配置不删 runtime 下的编译文件,等于没改。



















