頁面跳轉方法(success和error)和重定向


頁面跳轉

在應用開發中,經常會遇到一些帶有提示信息的跳轉頁面,例如操作成功或者操作錯誤頁面,並且自動跳轉到另外一個目標頁面。系統的\Think\Controller類內置了兩個跳轉方法success和error,用於頁面跳轉提示,而且可以支持ajax提交。

使用方法很簡單,舉例如下:

  1. $User = M('User'); //實例化User對象
  2. $result = $User->add($data);
  3. if($result){
  4. //設置成功后跳轉頁面的地址,默認的返回頁面是$_SERVER['HTTP_REFERER']
  5. $this->success('新增成功', 'User/list');
  6. } else {
  7. //錯誤頁面的默認跳轉頁面是返回前一頁,通常不需要設置
  8. $this->error('新增失敗');
  9. }

success和error方法的第一個參數表示提示信息,第二個參數表示跳轉地址,第三個參數是跳轉時間(單位為秒),例如:

  1. // 操作完成3秒后跳轉到 /Article/index
  2. $this->success('操作完成','/Article/index',3);
  3. // 操作失敗5秒后跳轉到 /Article/error
  4. $this->error('操作失敗','/Article/error',5);

跳轉地址是可選的,success方法的默認跳轉地址是$_SERVER["HTTP_REFERER"],error方法的默認跳轉地址是javascript:history.back(-1);

默認的等待時間success方法是1秒,error方法是3秒

successerror方法都可以對應的模板,默認的設置是兩個方法對應的模板都是:

  1. //默認錯誤跳轉對應的模板文件
  2. 'TMPL_ACTION_ERROR' => THINK_PATH . 'Tpl/dispatch_jump.tpl',
  3. //默認成功跳轉對應的模板文件
  4. 'TMPL_ACTION_SUCCESS' => THINK_PATH . 'Tpl/dispatch_jump.tpl',

也可以使用項目內部的模板文件

  1. //默認錯誤跳轉對應的模板文件
  2. 'TMPL_ACTION_ERROR' => 'Public:error';
  3. //默認成功跳轉對應的模板文件
  4. 'TMPL_ACTION_SUCCESS' => 'Public:success';

模板文件可以使用模板標簽,並且可以使用下面的模板變量:

變量 含義
$msgTitle 操作標題
$message 頁面提示信息
$status 操作狀態 1表示成功 0 表示失敗 具體還可以由項目本身定義規則
$waitSecond 跳轉等待時間 單位為秒
$jumpUrl 跳轉頁面地址

 

success和error方法會自動判斷當前請求是否屬於Ajax請求,如果屬於Ajax請求則會調用ajaxReturn方法返回信息。 ajax方式下面,success和error方法會封裝下面的數據返回:

  1. $data['info'] = $message; // 提示信息內容
  2. $data['status'] = $status; // 狀態 如果是success是1 error 是0
  3. $data['url'] = $jumpUrl; // 成功或者錯誤的跳轉地址

重定向

Controller類的redirect方法可以實現頁面的重定向功能。

redirect方法的參數用法和U函數的用法一致(參考URL生成部分),例如:

  1. //重定向到New模塊的Category操作
  2. $this->redirect('New/category', array('cate_id' => 2), 5, '頁面跳轉中...');

上面的用法是停留5秒后跳轉到New模塊的category操作,並且顯示頁面跳轉中字樣,重定向后會改變當前的URL地址。

如果你僅僅是想重定向要一個指定的URL地址,而不是到某個模塊的操作方法,可以直接使用redirect函數重定向,例如:

  1. //重定向到指定的URL地址
  2. redirect('/New/category/cate_id/2', 5, '頁面跳轉中...')

Redirect函數的第一個參數是一個URL地址。

控制器的redirect方法和redirect函數的區別在於前者是用URL規則定義跳轉地址,后者是一個純粹的URL地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM