模板中变量输出必须用{}包裹且{与$间无空格,如{$user.name}、{$user['name']};默认值用|default="文本",如{$user.nickname|default="未设置"}。

模板中直接输出变量和默认值怎么写
变量输出必须用 {} 包裹,且 { 和 $ 之间不能有空格,否则解析失败。常见写法包括:
-
{$user.name}→ 输出关联数组或对象属性 -
{$user['name']}→ 显式下标访问,兼容性更稳 -
{$user.nickname|default="未设置"}→ 变量为空时 fallback 文本 -
{$Think.get.id|default="1"|intval}→ 多个修饰符串联,顺序从左到右执行 -
{$status ? '启用' : '禁用'}→ 三元运算支持,注意不要嵌套括号
系统变量(如 $_GET)可简写为 {$_GET.id} 或完整写法 {$Think.get.id},两者等效;但 $_SESSION 等需注意 session 是否已启动,否则可能报 Notice。
view_replace_str 全局路径替换怎么配才生效
TP5.0 中静态资源路径统一替换靠 view_replace_str,它只在视图渲染完成、输出 HTML 前做字符串替换,不参与编译,所以改完配置必须清空 runtime/temp/ 缓存,否则旧缓存仍生效。
- 配置位置:在
config/view.php中添加'view_replace_str' => ['__STATIC__' => '/static', '__IMG__' => '/static/images'] - 模板中使用:
<img src="__IMG__/logo.png">→ 渲染后变成<img src="/static/images/logo.png"> - 局部覆盖:调用
$this->fetch('index', [], ['__STATIC__' => '/cdn/static'])会优先使用第三个参数的值 - 注意:键名必须全大写+双下划线,且不能含点号或斜杠,否则替换不触发
函数修饰符(| 后面的部分)有哪些常用组合
修饰符本质是 PHP 函数调用,| 后紧跟函数名,参数用 = 指定,多个参数用逗号分隔,### 占位原变量值。常见安全与格式化场景:
-
{$create_time|date="Y-m-d H:i",###}→date()第二个参数被替换成变量值 -
{$content|htmlspecialchars|nl2br}→ 多个函数顺序执行,注意htmlspecialchars会转义<br>,慎用nl2br在其后 -
{$name|substr=0,5|strtoupper}→ 截取前5字符再转大写,substr参数顺序必须严格 -
{$url|urlencode}→ 用于拼接 URL 查询参数,避免空格或特殊符号出错 - 禁止写
{$val|isset}或{$val|empty}—— 这些不是合法函数调用,会直接报Call to undefined function
系统变量和配置项在模板里怎么安全取值
系统变量($Think 开头)无需控制器 assign 就能直接读,但部分值依赖运行环境,容易踩空或报错:
-
{$Think.config.app_debug}→ 等价于config('app_debug'),配置存在即返回,不存在返回 null -
{$Think.session.user_id}→ 若 session 未 start 或user_id未 set,输出为空,不会报错 -
{$Think.const.APP_PATH}→ 输出常量值,但APP_PATH是绝对路径,暴露有风险,生产环境慎用 -
{$Think.lang.title}→ 语言包变量,若当前语言文件没定义title,输出为空字符串,不是报错 - 所有
$Think.*访问都只支持二维,{$Think.config.db.hostname.port}这种三级结构无效
真正容易被忽略的是:模板中任何变量访问失败都不会抛异常,而是静默输出空字符串或原始标签,查问题必须看编译后的 PHP 文件(在 runtime/temp/ 下),而不是盯着 HTML 源码猜。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











