ThinkPHP 模板引擎與模型層是 MVC 開發核心。本文系統梳理模板輸出三種方式、定界符自定義、模型實例化兩種模式、CURD 操作、volist 遍歷、頁面 Trace 調試等核心知識點。
<?php echo $username; ?> // 或 <?= $username ?>
<?php
class IndexAction extends Action {
public function index() {
$this->assign('username', '張三'); // 分配變量
$this->assign('users', $userList); // 分配陣列
$this->display(); // 默認渲染 當前模塊/當前操作.html
// $this->display('Public:header'); // 跨模塊渲染
}
}
?>
<?php
$this->show('內容字串'); // 直接輸出,不經模板引擎
?>
默認 {$var},可修改避免與 JS 模板衝突:
<?php
// config.php 或項目配置文件
'TMPL_L_DELIM' => '<{', // 左定界符
'TMPL_R_DELIM' => '}>', // 右定界符
?>
模板中改用:<{$username}>、<{volist name="list" id="vo"}>...<{/volist}>
<?php // config.php 'DB_TYPE' => 'mysql', 'DB_HOST' => 'localhost', 'DB_NAME' => 'thinkphp', 'DB_USER' => 'root', 'DB_PWD' => '', 'DB_PORT' => '3306', 'DB_PREFIX' => 'tp_', // 表前綴 // 或 DSN 方式(優先級更高) 'DB_DSN' => 'mysql://root:@localhost:3306/thinkphp', ?>
| 方式 | 代碼 | 特點 |
|---|---|---|
| new Model() | $m = new Model('User'); | 顯式指定表名(不含前綴) |
| M() 方法 | $m = M('User'); | 簡潔、自動處理前綴、單例模式 |
<?php
// 推薦:M() 方式
$m = M('User'); // 對應 tp_user 表
// 查詢
$list = $m->select(); // 全部
$user = $m->find(1); // 主鍵查詢
$user = $m->where('status=1')->find(); // 條件查詢
// 新增
$data = array('username'=>'李四', 'email'=>'lisi@test.com');
$id = $m->add($data); // 返回自增 ID
// 更新
$m->where('id=1')->save(array('username'=>'王五'));
// 刪除
$m->delete(1); // 主鍵刪除
$m->where('status=0')->delete(); // 條件刪除
?>
| 操作 | 方法 | 說明 |
|---|---|---|
| Create | add($data) | 新增,返回主鍵 ID |
| Read | find($pk)/select() | 單條/多條查詢 |
| Update | save($data) | 更新,需先 where 或 data 含主鍵 |
| Delete | delete($pk)/where()->delete() | 刪除 |
<!-- 模板文件 -->
<volist name='users' id='vo'>
<{$vo.id}>----<{$vo.username}>----<{$vo.sex}>
<br/><br/>
</volist>
<!-- 支援嵌套 -->
<volist name='data' id='group'>
<h3><{$group.name}></h3>
<volist name='group.users' id='user'>
<span><{$user.username}></span>
</volist>
</volist>
| 屬性 | 說明 |
|---|---|
| name | 數據源變量名(assign 分配的) |
| id | 循環變量名 |
| offset | 起始位置 |
| length | 循環長度 |
| key | 鍵名變量 |
| mod | 取模數(用於隔行換色) |
| empty | 空數據顯示內容 |
<?php
// 入口文件 index.php
define('APP_DEBUG', true); // 必須在最前面
?>
<?php // 配置文件 'SHOW_PAGE_TRACE' => true, // 頁面底部顯示 Trace 信息 ?>
<?php
// 生產環境必須關閉
define('APP_DEBUG', false);
'SHOW_PAGE_TRACE' => false,
?>
善用 Trace 能快速定位慢查詢、內存洩漏、模板變量缺失等疑難雜癥。