【小(xiǎo)編推薦】ThinkPHP3.2——跳(ti¶<≈ào)轉和(hé)重定向

2014-06-26 &nbs​"®p; |   βΩ£;發布者:梁國(guó)芳   ₩↓|   查看(kàn✘±↑σ):3320次

Thinkphp

頁面跳(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à"≥):

  1. $User = M('User'); //實例化(huà)User對(duì)象ε∏↕
  2. $result = $User->add($data);
  3. if($result){
  4. //設置成功後跳(tiào)轉頁面的(d££e)地(dì)址,默認的(de)返回頁面是(shì)$_S‍©ERVER['HTTP_REFERER']
  5. $this->success('新增成功', 'User/list');
  6. } else {
  7. //錯(cuò)誤頁面的(de)默認跳(t§ iào)轉頁面是(shì)返回前一(yī)頁,通(tōng)常不(bù$≤£)需要(yào)設置
  8. $this->error('新增失敗');
  9. }

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ú):

  1. // 操作(zuò)完成3秒(miǎo)後跳∑★(tiào)轉到(dào) /Article/index
  2. $this->success('操作(zuò)完成','/Article/index',3);
  3. // 操作(zuò)失敗5秒(miǎo)¶™←φ後跳(tiào)轉到(dào) /Art‍'‍₩icle/error
  4. $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ì):

  1. //默認錯(cuò)誤跳(tiào)轉對(duì)應的∑™™→(de)模闆文(wén)件(jiàn)
  2. 'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
  3. //默認成功跳(tiào)轉對(duì)€∏©應的(de)模闆文(wén)件(jiàn)
  4. 'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',

也(yě)可(kě)以使用(yòng)項目♦∏<內(nèi)部的(de)模闆文(wén)件(jià ₽n)

  1. //默認錯(cuò)誤跳(tiào)轉對(duì)應的(de)模闆文(wé₩♠n)件(jiàn)
  2. 'TMPL_ACTION_ERROR' => 'Public:error';
  3. //默認成功跳(tiào)轉對(duì)應的(de)模闆文(wén↕✘)件(jiàn)
  4. '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≤♣♣>ù)據返回:

  1. $data['info'] = $message; // 提示信息內(nèi)容
  2. $data['status'] = $status; // 狀态 如(rú)果是(shì)success是(shì)1®♦∞₽ error 是(shì)0
  3. $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ú):

  1. //重定向到(dào)New模塊的(de)Category操作(zuò)
  2. $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ú):

  1. //重定向到(dào)指定的(de)URL地(dì)址
  2. 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δ£γ ì)址。