在 ThinkPHP 開發中,success() 與 error() 方法是控制器常用的跳轉提示機制。本文將透過完整實例,詳細解析這兩個方法對應的視圖模板與控制器實作細節,幫助開發者徹底掌握跳轉提示的客製化技巧。
在控制器動作中,透過判斷業務邏輯執行結果,呼叫對應的跳轉方法:
<?php
class IndexAction extends Action {
public function index() {
$this->assign("title", "淨水器");
$User = M("User");
$result = $User->add($data);
if ($result) {
// 成功時指定跳轉頁面,預設為 HTTP_REFERER
$this->assign("jumpUrl", "index");
$this->success("新增成功!");
} else {
// 失敗時預設返回上一頁,通常無需額外設定
$this->error("新增錯誤!");
}
$this->display();
}
}
?>
模板位置:Tpl/default/Public/success.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="200; url='{$Url}'" />
<title>成功提示信息</title>
</head>
<body>
<table width="500" border="1" align="center" cellpadding="3" cellspacing="0">
<tr>
<th align="center" bgcolor="#cccccc">成功信息提示</th>
</tr>
<tr>
<td>
{$message}<br />
成功處理的標題信息:{$msgTitle}<br />
<present name="message"> 自定義成功信息:{$message}<br /> </present>
<present name="error"> 自定義錯誤信息:{$error}<br /> </present>
跳轉頁面路徑:{$jumpUrl}<br />
停留時間:{$waitSecond}<br />
2秒後返回指定頁面!<br />
如果瀏覽器無法跳轉,<a href="__ROOT__/{$jumpUrl}" rel="external nofollow">請點擊此處</a>。
</td>
</tr>
</table>
</body>
</html>
模板位置:Tpl/default/Public/error.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="2; url='{$Url}'" />
<title>錯誤提示信息</title>
</head>
<body>
<table width="400" border="1" align="center" cellpadding="3" cellspacing="0">
<tr>
<th align="center" bgcolor="#cccccc">錯誤信息提示</th>
</tr>
<tr>
<td>
{$message}<br />
錯誤處理的標題信息:{$msgTitle}<br />
<present name="message"> 自定義成功信息:{$message}<br /> </present>
<present name="error"> 自定義錯誤信息:{$error}<br /> </present>
跳轉頁面路徑:{$jumpUrl}<br />
停留時間:{$waitSecond}<br />
2秒後返回指定頁面!<br />
如果瀏覽器無法跳轉,<a href="__ROOT__/{$jumpUrl}" rel="external nofollow">請點擊此處</a>。
</td>
</tr>
</table>
</body>
</html>
兩個模板均可使用以下內建變數:
若為 AJAX 請求,success() 與 error() 會自動改呼叫 ajaxReturn() 回傳 JSON 格式資料。
預設模板分別為 Public:success 與 Public:error,可在專案配置或控制器中覆寫:
// 在控制器中指定自訂模板
$this->success("操作成功!", "跳轉網址", "自訂模板名稱");
$this->error("操作失敗!", "跳轉網址", "自訂模板名稱");
掌握這套機制,即可輕鬆建立符合專案風格的友善跳轉提示頁面。