頁面跳(tiào)轉
在應用(yòng)開(kāi)發中,經常會(huì)遇到(¥γ↔dào)一(yī)些(xiē)帶有(yǒu)提示信息∞∏的(de)跳(tiào)轉頁面,例如(rú)操作(zuò)成功或者操作(zu"™σ<ò)錯(cuò)誤頁面,并且自(zì)動跳(tiào)轉到(dào)另外(£★wài)一(yī)個(gè)目标頁面。系統的(de)\★✘↔Think\Controller類內(nèi)置了(le)兩≠β₩↕個(gè)跳(tiào)轉方法success和(hé)error,用(yòn↕ε£g)于頁面跳(tiào)轉提示,而且可(kě)以支持ajax提交。
使用(yòng)方法很(hěn)簡單,舉例如(rú)下(xià"≥):
$User = M('User'); //實例化(huà)User對(duì)象ε∏↕$result = $User->add($data);if($result){//設置成功後跳(tiào)轉頁面的(d££e)地(dì)址,默認的(de)返回頁面是(shì)$_S©ERVER['HTTP_REFERER']$this->success('新增成功', 'User/list');} else {//錯(cuò)誤頁面的(de)默認跳(t§ iào)轉頁面是(shì)返回前一(yī)頁,通(tōng)常不(bù$≤£)需要(yào)設置$this->error('新增失敗');}
success和(hé)error方法的(de§≈≈)第一(yī)個(gè)參數(shù)表示提示信息,第≤二個(gè)參數(shù)表示跳(tiào)轉地(dì)址™±,第三個(gè)參數(shù)是(shì)跳(tiào)轉時(sh™≥πí)間(jiān)(單位為(wèi)秒(miǎo)),例如(rú):
// 操作(zuò)完成3秒(miǎo)後跳∑★(tiào)轉到(dào) /Article/index$this->success('操作(zuò)完成','/Article/index',3);// 操作(zuò)失敗5秒(miǎo)¶™←φ後跳(tiào)轉到(dào) /Art'₩icle/error$this->error('操作(zuò)失敗','/Article/error',5);
跳(tiào)轉地(dì)址是(shì)可(kěδ ≠✘)選的(de),success方法的(de)默認跳(tiào)轉地(dì)址"→♠→是(shì)$_SERVER["HTTP_REFERER"],error方法的(de)默認跳(tiào)轉地(dì)♣®址是(shì)javascript:history.back(-↔£π↓1);。
默認的(de)等待時(shí)間(jiān)suc π₽cess方法是(shì)1秒(miǎo),e₩φ→≥rror方法是(shì)3秒(miǎo)
success和(hé)error方法都(dōu)可(kě)以對(duì)應的(de)模闆,默認的(de✔α↕★)設置是(shì)兩個(gè)方法對(duì)應的(de)模闆都(d•≥€✔ōu)是(shì):
//默認錯(cuò)誤跳(tiào)轉對(duì)應的∑™™→(de)模闆文(wén)件(jiàn)'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',//默認成功跳(tiào)轉對(duì)€∏©應的(de)模闆文(wén)件(jiàn)'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
也(yě)可(kě)以使用(yòng)項目♦∏<內(nèi)部的(de)模闆文(wén)件(jià ₽n)
//默認錯(cuò)誤跳(tiào)轉對(duì)應的(de)模闆文(wé₩♠n)件(jiàn)'TMPL_ACTION_ERROR' => 'Public:error';//默認成功跳(tiào)轉對(duì)應的(de)模闆文(wén↕✘)件(jiàn)'TMPL_ACTION_SUCCESS' => 'Public:success';
模闆文(wén)件(jiàn)可(kě)以使用(ε§yòng)模闆标簽,并且可(kě)以使用(yòng)下(xià)面的(" ¶de)模闆變量:
| 變量 | 含義 |
|---|---|
| $msgTitle | 操作(zuò)标題 |
| $message | 頁面提示信息 |
| $status | 操作(zuò)狀态 1表示成功 0 表示失敗 具體§¶(tǐ)還(hái)可(kě)以由項目本身(shēn)定義規則 ♥®÷ |
| $waitSecond | 跳(tiào)轉等待時(shí)間(jiān) 單位為(w ₽φèi)秒(miǎo) |
| $jumpUrl | 跳(tiào)轉頁面地(dì)址 |
success和(hé)error方法會(huì)☆✘≈自(zì)動判斷當前請(qǐng)求是(shì)否屬于Ajax請(qǐng♦♣)求,如(rú)果屬于Ajax請(qǐng)求則會(huì)©✘✔©調用(yòng)ajaxReturn方法返回信息。 aj ↑ax方式下(xià)面,success和(h¶↕<é)error方法會(huì)封裝下(xià)面的(de)數(sh≤♣♣>ù)據返回:
$data['info'] = $message; // 提示信息內(nèi)容$data['status'] = $status; // 狀态 如(rú)果是(shì)success是(shì)1®♦∞₽ error 是(shì)0$data['url'] = $jumpUrl; // 成功或者錯(cuò)誤的(de)跳(tiào)<☆轉地(dì)址
重定向
Controller類的(de)redirect方法可(kě)以實現(x§"iàn)頁面的(de)重定向功能(néng)。∏★
redirect方法的(de)參數(shù)用(yòng™™≠)法和(hé)U函數(shù)的(de)用(yòng)δΩ法一(yī)緻(參考URL生(shēng)成部分(fēn)),例如(rú):
//重定向到(dào)New模塊的(de)Category操作(zuò)$this->redirect('New/category', array('cate_id' => 2), 5, '頁面跳(tiào)轉中...');
上(shàng)面的(de)用(yòng≥σ±γ)法是(shì)停留5秒(miǎo)後跳(tiào)轉±₽φ到(dào)New模塊的(de)category操作(zuò),≠'₽并且顯示頁面跳(tiào)轉中字樣,重定β©&←向後會(huì)改變當前的(de)URL地(dì)址。
如(rú)果你(nǐ)僅僅是(shì)想重定向要(yào)一(yī)個(gè)≥'§<指定的(de)URL地(dì)址,而不(bù)是(shì)到(d★↕§ào)某個(gè)模塊的(de)操作(zuò)方法,可(kě)以直接使用♥ (yòng)redirect函數(shù)重定向,例如(rú):
//重定向到(dào)指定的(de)URL地(dì)址redirect('/New/category/cate_id/2π✘', 5, '頁面跳(tiào)轉中...')
Redirect函數(shù)的(de)第一(yī)個(gè)參<∑§數(shù)是(shì)一(yī)個(gè)URL地(dì)址。
控制(zhì)器(qì)的(de)redirect方法和(hé)r±πedirect函數(shù)的(de)區(qū)别在于前者是(shì)用☆×↔♠(yòng)URL規則定義跳(tiào)轉地(dì)址, £₽€後者是(shì)一(yī)個(gè)純粹的(de)URL地(dδ£γ ì)址。




