官术网_书友最值得收藏!

  • ThinkPHP實戰
  • 夏磊
  • 701字
  • 2020-11-28 18:26:54

4.8 重定向和頁面跳轉

4.8.1 重定向

在訪問受保護的地址時,需要檢測登錄,如果用戶未登錄則直接跳轉登錄頁面,此時需要用到重定向。ThinkPHP重定向的方法名為redirect,該方法為Cntroller的成員方法,需要在控制器中才能調用。

編輯Application/Home/Controller/IndexController.class.php,代碼如下:

        <? php
        namespace Home\Controller;
        use Think\Controller;
        class IndexController extends Controller
        {
        public function index()
        {
            $this->redirect('login');
        }
        public function bind($id = 1)
        {
            echo U('Blog/view', array('id' => 1), 'shtml');
        }
        public function login()
        {
            echo ’這是登錄頁’;
        }
        }

瀏覽器訪問http://localhost/chapter-4/home/index/index,會發現瀏覽器自動跳轉到http://localhost/chapter-4/home/index/login了。

redirect的第一個參數為URL地址表達式,第二個參數為URL變量,第三個參數為延遲時間,第四個參數為提示消息。

值得注意的是,ThinkPHP還內置一個redirect函數,該函數接收三個參數,第一個參數為URL地址,第二個參數為延遲時間,第三個參數為消息提示。與控制器redirect方法的區別是,redirect函數的第一個參數是一個獨立的URL地址,系統不會對其做任何處理,而控制器的redirect方法第一個參數是URL地址表達式,ThinkPHP會根據URL_MODEL生成相應的URL。

4.8.2 頁面跳轉

在開發中,經常遇到一些帶有信息提示的跳轉頁面,例如“充值成功,3秒后返回訂單頁”這種需求。ThinkPHP內置success和error方法來實現頁面跳轉。

編輯Application/Home/Controller/IndexController.class.php,代碼如下:

        <? php
        namespace Home\Controller;
        use Think\Controller;
        class IndexController extends Controller
        {
        public function index()
        {
            $data = array(
                'status' => 1,
                'data' => 'data'
            );
            $this->ajaxReturn($data, 'xml');
        }
        public function bind($id = 1)
        {
            echo U('Blog/view', array('id' => 1), 'shtml');
        }
        public function buy()
        {
            $this->success(’購買成功,1秒后跳轉首頁’, U('index'));
        }
        }

瀏覽器訪問http://localhost/chapter-4/Home/Index/buy,可以得到如圖4-1所示結果。

圖4-1

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

$this->success(‘操作成功,3秒后返回首頁’, U(‘index'),3);

$this->error(‘您尚未登錄,1秒后返回登錄頁’, U(‘User/login'),1);

如果跳轉地址為空,success默認跳轉$_SERVER["HTTP_REFERER"], error默認跳轉javascript:history.back(-1);。

success的默認跳轉延遲時間為1秒,error方法為3秒。

和redirect方法不同的是,success和error方法都可以使用模板,而redirect方法只能輸出字符串,success和error默認的模板文件地址為THINK_PATH . 'Tpl/dispatch_jump.tpl', success方法可以配置“TMPL_ACTION_SUCCESS”改變模板地址,error方法可以配置“TMPL_ACTION_ERROR”改變模板地址。

主站蜘蛛池模板: 宣汉县| 滦平县| 满洲里市| 宜州市| 合水县| 永德县| 得荣县| 兴仁县| 新乡县| 温州市| 双辽市| 稻城县| 鲁山县| 弥勒县| 伊春市| 庄浪县| 兖州市| 奉贤区| 都江堰市| 大悟县| 志丹县| 缙云县| 崇州市| 西青区| 陇南市| 治多县| 和顺县| 确山县| 甘孜县| 行唐县| 武乡县| 桐乡市| 启东市| 肇庆市| 叙永县| 扶绥县| 云阳县| 安康市| 岐山县| 休宁县| 呼伦贝尔市|