thinkphp5 三種重新導向(跳轉)

來源:互聯網
上載者:User

標籤:系統   UI   ack   direct   path   return   xtend   一個   table   

頁面跳轉

在應用開發中,經常會遇到一些帶有提示資訊的跳轉頁面,例如操作成功或者操作錯誤頁面,並且自動跳轉到另外一個目標頁面。系統的\think\Controller類內建了兩個跳轉方法successerror,用於頁面跳轉提示。

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

namespace app\index\controller;use think\Controller;use app\index\model\User;class Index extends Controller{    public function index()    {        $User = new User; //執行個體化User對象        $result = $User->save($data);         if($result){            //設定成功後跳轉頁面的地址,預設的返回頁面是$_SERVER[‘HTTP_REFERER‘]            $this->success(‘新增成功‘, ‘User/list‘);        } else {            //錯誤頁面的預設跳轉頁面是返回前一頁,通常不需要設定            $this->error(‘新增失敗‘);        }    }}

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

預設的等待時間都是3秒

successerror方法都可以對應的模板,預設的設定是兩個方法對應的模板都是:

THINK_PATH . ‘tpl/dispatch_jump.tpl‘

我們可以改變預設的模板:

//預設錯誤跳轉對應的模板檔案‘dispatch_error_tmpl‘ => APP_PATH . ‘tpl/dispatch_jump.tpl‘,//預設成功跳轉對應的模板檔案‘dispatch_success_tmpl‘ => APP_PATH . ‘tpl/dispatch_jump.tpl‘,

也可以使用項目內部的模板檔案

//預設錯誤跳轉對應的模板檔案‘dispatch_error_tmpl‘ => ‘public/error‘,//預設成功跳轉對應的模板檔案‘dispatch_success_tmpl‘ => ‘public/success‘,

模板檔案可以使用模板標籤,並且可以使用下面的模板變數:

變數 含義
$data 要返回的資料
$msg 頁面提示資訊
$code 返回的code
$wait 跳轉等待時間 單位為秒
$url 跳轉頁面地址

error方法會自動判斷當前請求是否屬於Ajax請求,如果屬於Ajax請求則會自動轉換為default_ajax_return配置的格式返回資訊。 success在Ajax請求下不返回資訊,需要開發人員自行處理。

重新導向

\think\Controller類的redirect方法可以實現頁面的重新導向功能。

redirect方法的參數用法和Url::build方法的用法一致(參考URL產生部分),例如:

//重新導向到News模組的Category操作$this->redirect(‘News/category‘, [‘cate_id‘ => 2]);

上面的用法是跳轉到News模組的category操作,重新導向後會改變當前的URL地址。

或者直接重新導向到一個指定的外部URL地址,例如:

//重新導向到指定的URL地址 並且使用302$this->redirect(‘http://thinkphp.cn/blog/2‘,302);

可以在重新導向的時候通過session快閃記憶體資料傳值,例如

$this->redirect(‘News/category‘, [‘cate_id‘ => 2], 302, [‘data‘ => ‘hello‘]);

使用redirect助手函數還可以實現更多的功能,例如可以記住當前的URL後跳轉

redirect(‘News/category‘)->remember();

需要跳轉到上次記住的URL的時候使用:

redirect()->restore();

thinkphp5 三種重新導向(跳轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.