页面跳转
有提示信息的跳转页面
操作成功或操作错误页面 自动跳转到另外页面。
系统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后缀。
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题