ThinkPHP模板输出变量统一用{$变量名}语法:普通变量直接写,数组用{$arr['key']},系统变量用{$Think.xxx},对象属性用{$obj->prop},富文本需加|raw修饰符并确保安全,可设默认值和简单运算。

ThinkPHP模板里输出变量,核心就一条:用 {$变量名} 语法,但不同变量类型、来源和安全要求,写法和注意事项各不相同。
普通变量和数组怎么输出
控制器中用 assign() 赋值后,模板直接调用:
- 字符串:
$this->assign('username', '王五');→ 模板写{$username} - 关联数组:
$this->assign('user', ['name' => '李四', 'age' => 28]);→ 可写{$user.name}或{$user['name']}(推荐后者,多维时更可靠) - 批量赋值:
$this->assign(['city' => '广州', 'code' => '020']);→ 模板写{$city}:{$code}
系统变量和配置项不用 assign 直接取
这些是框架预置的全局数据,无需控制器赋值,模板中以 {$Think.xxx} 形式调用:
- 请求参数:
{$Think.get.id}(对应$_GET['id'])、{$Think.post.title} - 会话与 Cookie:
{$Think.session.user_id}、{$Think.cookie.token} - 服务器信息:
{$Think.server.HTTP_USER_AGENT}、{$Think.server.REQUEST_URI} - 配置项:
{$Think.config.app_debug}(读取config/app.php中的配置) - 常量:
{$Think.const.PHP_VERSION}、{$Think.IS_WIN}(判断是否 Windows 环境)
对象、JSON 和富文本要特别注意转义
默认所有 {$xxx} 都经过 htmlentities() 转义,防止 XSS。但有些内容需要原样输出:
立即学习“PHP免费学习笔记(深入)”;
- 对象属性:
{$user:name}或{$user->name}(注意冒号或箭头写法) - HTML 富文本或 JSON 字符串:必须加
|raw修饰符,如{$article.content|raw} - 但
|raw有风险,务必确保内容已做过安全过滤(比如用htmlspecialchars_decode()前先 strip_tags 或白名单过滤)
加默认值和简单运算也很常用
提升模板健壮性,避免空值报错或显示异常:
- 设默认值:
{$user.nickname|default="未设置昵称"}、{$Think.get.q|default="搜索关键词"} - 做简单计算:
{$score + 10}、{$user.age * 12}(仅支持基础算术,不支持函数嵌套如{$a|func+1}) - 调用函数格式:
{$create_time|date='Y-m-d'},其中###代表变量本身,可省略



















