ThinkPHP 模板引擎提供豐富的變量輸出標籤與靈活的模板渲染方式,本文整理核心語法供開發速查。
| 標籤 | 功能 | 示例 | 等效 PHP |
|---|---|---|---|
{$var} | 輸出模板變量 | {$user.name} | |
{:function()} | 執行函數並輸出返回值 | {:date('Y-m-d', $time)} | |
{~function} | 執行函數不輸出 | {~session_start()} | |
{@var} | 輸出 Session 變量 | {@user_id} | |
{#var} | 輸出 Cookie 變量 | {#think_language} | |
{&var} | 輸出配置參數 | {&URL_MODEL} | |
{%var} | 輸出語言變量 | {%_LANG_WELCOME} | |
{.var} | 輸出 GET 變量 | {.id} | |
{^var} | 輸出 POST 變量 | {^username} | |
{*var} | 輸出常量 | {*THINK_VERSION} | |
{$Think.get.id} // $_GET['id']
{$Think.post.name} // $_POST['name']
{$Think.session.user_id} // $_SESSION['user_id']
{$Think.cookie.lang} // $_COOKIE['lang']
{$Think.server.REQUEST_URI} // $_SERVER['REQUEST_URI']
{$Think.env.PATH} // $_ENV['PATH']
{$Think.request.id} // $_REQUEST['id']
// 控制器中
// 1. 渲染默認模板(模塊/控制器/操作.html)
$this->display();
// 對應:Tpl/默認主題/控制器/操作.html
// 2. 渲染當前模塊指定操作模板
$this->display('edit');
// 對應:Tpl/默認主題/控制器/edit.html
// 3. 渲染指定模塊操作模板
$this->display('User:profile');
// 對應:Tpl/默認主題/User/profile.html
// 4. 渲染指定主題模塊操作模板
$this->display('Mobile@User:login');
// 對應:Tpl/Mobile/User/login.html
// 5. 渲染指定絕對/相對路徑模板文件
$this->display('./Public/error.html');
// 對應:項目根目錄/Public/error.html
// 6. 直接輸出內容(不使用模板文件)
$this->show('內容字符串', 'utf-8', 'text/html');
// 單個賦值
$this->assign('title', '頁面標題');
$this->assign('user', $userModel);
// 批量賦值
$this->assign([
'title' => '列表頁',
'list' => $dataList,
'page' => $pageHtml
]);
// 模板中直接使用 {$title}、{$user.name}、{$list}、{$page}
<if condition="$user['status'] eq 1">正常<else/>禁用</if><volist name="list" id="vo">{$vo.name}</volist><include file="Public:header" />{$content|raw} 或 {$content|htmlspecialchars_decode}{$var|default='無'}// 假設:DEFAULT_THEME = 'default', TMPL_PATH = './Tpl/'
// 模塊: Home, 控制器: Index, 操作: index
display() → ./Tpl/default/Home/Index/index.html
display('edit') → ./Tpl/default/Home/Index/edit.html
display('User:add') → ./Tpl/default/Home/User/add.html
display('Mobile@User:login') → ./Tpl/Mobile/Home/User/login.html
display('./Public/404.html') → ./Public/404.html
熟練掌握模板語法與渲染調用,能顯著提升視圖層開發效率。