页面跳转

有提示信息的跳转页面
操作成功或操作错误页面 自动跳转到另外页面。
系统5.1的Controller类内置了两个跳转方法successerror 用于页面跳转提示
 thinkphp/library/traits/controller/Jump.php
 protected function success($msg = '', $url = null, $data = '', $wait = 3, array $header = [])

使用方法

<?php
namespace appindexcontroller;
use app\index\model\User;
use think\Controller;
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方法对应的模板
默认的设置是两个方法对应的模板都是

'thinkphp/tpl/dispatch_jump.tpl'

改变默认的模板

//默认错误跳转对应的模板文件'dispatch_error_tmpl' => '../application/tpl/dispatch_jump.tpl',//默认成功跳转对应的模板文件'dispatch_success_tmpl' => '../application/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请求下不返回信息 需要开发者自行处理

重定向

thinkController类的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();

包括redirectsuccesserror方法在内的url地址参数不需要使用url方法 系统会自动调用url方法 否则会出现重复的url后缀。