Smarty 不僅能分配 PHP 變量,還支援直接從配置文件讀取數據,以及在模板中無需分配即可存取 $_GET、$_POST、$_SERVER 等超全域變量。本文詳細說明這兩項實用功能的配置與用法。
當某些配置值(如網站標題、主題顏色、分頁大小)不想硬編碼在 PHP 代碼中,或需由非開發人員維護時,可放入配置文件,模板直接讀取。
建立 config/ 目錄,新建 my.config(或 .ini),內容為 key=value 格式:
title="This is the title of the website."
bgcolor="pink"
{config_load file="my.config"}
{#title#}
{config_load file="..."}:載入配置文件(路徑相對 $config_dir)。{#key#}:輸出配置值。Smarty 內建封裝了超全域陣列,模板中可直接通過 $smarty.get、$smarty.post、$smarty.server 等存取,無需在 PHP 中 assign()。
用戶名:{$smarty.get.username}
密碼:{$smarty.get.password}
對應 URL:?username=admin&password=123
用戶名:{$smarty.post.username}
密碼:{$smarty.post.password}
服務器名稱:{$smarty.server.SERVER_NAME}
請求方法:{$smarty.server.REQUEST_METHOD}
$smarty.cookies - $_COOKIE$smarty.session - $_SESSION(需開啟 session)$smarty.env - $_ENV$smarty.request - $_REQUEST$smarty.now - 當前時間戳(time())$smarty.template - 當前模板文件名$smarty.version - Smarty 版本號雖然方便,但直接在模板輸出用戶輸入(GET/POST)存在 XSS 風險。建議:
{$smarty.get.var|escape:'html'} 進行轉義。善用配置文件與保留變量,能減少 PHP 控制器的樣板代碼,讓模板更具自主性,但務必注意輸出轉義與權限控制。