熟悉 ThinkPHP 的開發者都知道,模型層提供了自動驗證、自動完成等強大的輔助功能。在實際開發中,經常遇到需要在自動完成時獲取 Session 值並自動賦值的場景。以下通過具體代碼示範如何實現這一需求。
<?php
class ArticleModel extends Model {
protected $_auto = array(
array('addtime', 'time', 1, 'function'),
array('username', 'getName', 1, 'callback')
);
// 獲取 Session 中的用戶名
protected function getName() {
return $_SESSION["name"];
}
}
在自動完成定義陣列的最後一個參數中,function 和 callback 有明確區別:
Common/common.php 查找對應函數getName)使用 Model() 或 M() 實例化的是基礎模型類,無法觸發自定義模型中的自動驗證/完成。正確做法:
// 錯誤寫法
$User = new Model('Admin');
// 正確寫法一:直接實例化自定義模型
$User = new AdminModel();
// 正確寫法二:使用 D 方法(推薦)
$User = D('Admin');
{$Think.session}<php></php> 標籤中編寫原生 PHP 代碼<?php ?> 標籤內嵌 PHP 判斷邏輯assign() 將 Session 變量賦值給模板以上方法各有適用場景,建議根據項目規範統一選擇一種方式,保持代碼風格一致。