页面跳转
有提示信息的跳转页面
操作成功或操作错误页面 自动跳转到另外页面。
系统5.1的Controller类内置了两个跳转方法success和error 用于页面跳转提示
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秒
success和error方法对应的模板
默认的设置是两个方法对应的模板都是
'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();
包括
redirect、success和error方法在内的url地址参数不需要使用url方法 系统会自动调用url方法 否则会出现重复的url后缀。

尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题