# 快速入門(十四):頁(yè)面跳轉(zhuǎn)和重定向
本章內(nèi)容講解了如何在ThinkPHP中使用頁(yè)面跳轉(zhuǎn)和重定向功能。
## 頁(yè)面跳轉(zhuǎn)
系統(tǒng)的`Think\Controller`類內(nèi)置了兩個(gè)頁(yè)面跳轉(zhuǎn)方法error和success,分別用于錯(cuò)誤(提示)跳轉(zhuǎn)和成功(提示)跳轉(zhuǎn)。兩個(gè)方法都會(huì)輸出一個(gè)提示信息頁(yè)面,然后自動(dòng)跳轉(zhuǎn)到指定的地址。下面是一個(gè)簡(jiǎn)單的例子:
~~~
$New = M('New'); //實(shí)例化New對(duì)象
$result = $New->add($data);
if($result){
// 成功后跳轉(zhuǎn)到新聞列表頁(yè)面
$this->success('新增成功,即將返回列表頁(yè)面', '/New/index');
} else {
// 錯(cuò)誤頁(yè)面的默認(rèn)跳轉(zhuǎn)頁(yè)面是返回前一頁(yè),通常不需要設(shè)置
$this->error('新增失敗');
}
~~~
success和error方法有三個(gè)參數(shù),分別是提示信息、跳轉(zhuǎn)地址和跳轉(zhuǎn)頁(yè)面等待時(shí)間(秒),除了第一個(gè)參數(shù)外其他都是可選的。
**提示信息**:成功或者錯(cuò)誤信息字符串。
**跳轉(zhuǎn)地址**:頁(yè)面跳轉(zhuǎn)地址是可選的,success方法的默認(rèn)跳轉(zhuǎn)地址是`$_SERVER["HTTP_REFERER"]`,error方法的默認(rèn)跳轉(zhuǎn)地址是`javascript:history.back(-1);`。
**等待時(shí)間**:默認(rèn)的等待時(shí)間success方法是1秒,error方法是3秒。
success和error方法都可以對(duì)應(yīng)的模板,默認(rèn)兩個(gè)方法對(duì)應(yīng)的模板是框架自帶的跳轉(zhuǎn)模板dispatch_jump.tpl:
~~~
//默認(rèn)錯(cuò)誤跳轉(zhuǎn)對(duì)應(yīng)的模板文件
'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
//默認(rèn)成功跳轉(zhuǎn)對(duì)應(yīng)的模板文件
'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
~~~
success方法默認(rèn)頁(yè)面顯示如下:

error方法默認(rèn)頁(yè)面顯示如下:

你可以重新定義跳轉(zhuǎn)模板,通常建議直接放到項(xiàng)目目錄下面(下面采用公共模塊的模板作為項(xiàng)目統(tǒng)一的跳轉(zhuǎn)模板):
~~~
//默認(rèn)錯(cuò)誤跳轉(zhuǎn)對(duì)應(yīng)的模板文件
'TMPL_ACTION_ERROR' => 'Common@Public/error',
//默認(rèn)成功跳轉(zhuǎn)對(duì)應(yīng)的模板文件
'TMPL_ACTION_SUCCESS' => 'Common@Public/success',
~~~
模板文件可以使用模板標(biāo)簽,并且可以使用下面的模板變量:
| 變量 | 含義 |
|-----|-----|
| $message | 頁(yè)面成功提示信息 |
| $error| 頁(yè)面錯(cuò)誤提示信息 |
| $waitSecond | 跳轉(zhuǎn)等待時(shí)間 單位為秒 |
| $jumpUrl | 跳轉(zhuǎn)頁(yè)面地址 |
## 重定向
如果不需要提示頁(yè)面,ThinkPHP還可以實(shí)現(xiàn)直接重定向操作,`Think\Controller`類提供了redirect方法實(shí)現(xiàn)頁(yè)面的重定向功能。
### 重定向到操作
~~~
redirect('重定向操作地址(一般為[控制器/操作])','參數(shù)(字符串或者數(shù)組)','重定向等待時(shí)間(秒)','重定向提示信息')
~~~
例如:
~~~
$New = M('New'); //實(shí)例化New對(duì)象
$result = $New->add($data);
if($result){
// 停留5秒后跳轉(zhuǎn)到New模塊的category操作,并且顯示頁(yè)面跳轉(zhuǎn)中字樣
$this->redirect('New/category', 'cate_id=2&status=1', 5,'頁(yè)面跳轉(zhuǎn)中...');
} else {
// 錯(cuò)誤頁(yè)面
$this->redirect('New/error');
}
~~~
可以傳入?yún)?shù)和設(shè)置重定向的等待時(shí)間,甚至給出等待的提示信息:
> 注意:重定向后會(huì)改變當(dāng)前的URL地址。
### 重定向到URL
如果你僅僅是想重定向要一個(gè)指定的URL地址,而不是到控制器的操作方法,可以直接使用redirect函數(shù)重定向,例如:
~~~
$New = M('New'); //實(shí)例化New對(duì)象
$result = $New->add($data);
if($result){
//重定向到指定的URL地址
redirect('/New/category/cate_id/2', 5, '頁(yè)面跳轉(zhuǎn)中...');
}
~~~
> redirect函數(shù)的第一個(gè)參數(shù)是要跳轉(zhuǎn)的實(shí)際URL地址。
- 快速入門 1:基礎(chǔ)
- 快速入門 2:CURD
- 快速入門 3:查詢語(yǔ)言
- 快速入門 4:連貫操作
- 快速入門 5:變量
- 快速入門 6:路由
- 快速入門 7:視圖
- 快速入門 8:變量輸出
- 快速入門 9:循環(huán)和控制輸出
- 快速入門 10:公共模板和模板布局
- 快速入門 11:Action參數(shù)綁定
- 快速入門 12:空操作和空控制器
- 快速入門 13:初始化、前置和后置操作
- 快速入門 14:頁(yè)面跳轉(zhuǎn)和重定向
- 快速入門 15:頁(yè)面請(qǐng)求和AJAX
- 快速入門 16:偽靜態(tài)
- 快速入門 17:操作綁定到類
- 快速入門 18:多層控制器
- 快速入門 19:自動(dòng)驗(yàn)證
- 快速入門 20:自動(dòng)完成
