最近把项目升级到tp6.0,一开始比较顺利,安装文档升级,但是升级指导指出:
系统不再提供基础控制器类 think\Controller ,原来的 success 、 error 、 redirect 和 result 方法需要自己在基础控制器类里面实现。
这意味着需要自己来实现原来的一系列的函数
我这里参考to5.1的跳转源码,进行改进得到,具体步骤如下:
1、app目录下新建一个tpl文件夹,放入dispatch_jump.tpl文件,这个可以直接到原来的tp5中copy
2、在config文件夹的app.php中添加配置模板文件的路径
1
2
3
|
// 默认跳转页面对应的模板文件 'dispatch_success_tmpl' => app()->getRootPath() . '/app/tpl/dispatch_jump.tpl' , 'dispatch_error_tmpl' => app()->getRootPath() . '/app/tpl/dispatch_jump.tpl' , |
3、在基类BaseController中添加下面的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
use think\exception\HttpResponseException; use think\Response; …… /** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixed $data 返回的数据 * @param integer $wait 跳转等待时间 * @param array $header 发送的Header信息 * @return void */ protected function success( $msg = '' , string $url = null, $data = '' , int $wait = 3, array $header = []) { if ( is_null ( $url ) && isset( $_SERVER [ "HTTP_REFERER" ])) { $url = $_SERVER [ "HTTP_REFERER" ]; } elseif ( $url ) { $url = ( strpos ( $url , '://' ) || 0 === strpos ( $url , '/' )) ? $url : $this ->app->route->buildUrl( $url ); } $result = [ 'code' => 1, 'msg' => $msg , 'data' => $data , 'url' => $url , 'wait' => $wait , ]; $type = $this ->getResponseType(); // 把跳转模板的渲染下沉,这样在 response_send 行为里通过getData()获得的数据是一致性的格式 if ( 'html' == strtolower ( $type )) { $type = 'view' ; } $response = Response::create( $result , $type )->header( $header )->options([ 'jump_template' => app()->config->get( 'app.dispatch_success_tmpl' )]); throw new HttpResponseException( $response ); } /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixed $data 返回的数据 * @param integer $wait 跳转等待时间 * @param array $header 发送的Header信息 * @return void */ protected function error( $msg = '' , string $url = null, $data = '' , int $wait = 3, array $header = []) { if ( is_null ( $url )) { $url = $this ->request->isAjax() ? '' : 'javascript:history.back(-1);' ; } elseif ( $url ) { $url = ( strpos ( $url , '://' ) || 0 === strpos ( $url , '/' )) ? $url : $this ->app->route->buildUrl( $url ); } $result = [ 'code' => 0, 'msg' => $msg , 'data' => $data , 'url' => $url , 'wait' => $wait , ]; $type = $this ->getResponseType(); if ( 'html' == strtolower ( $type )) { $type = 'view' ; } $response = Response::create( $result , $type )->header( $header )->options([ 'jump_template' => app()->config->get( 'app.dispatch_success_tmpl' )]); throw new HttpResponseException( $response ); } |
总结
以上所述是小编给大家介绍的基于thinkphp6.0的success、error实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
原文链接:http://wuyudong.com/2019/11/04/3339.html?utm_source=tuicool&utm_medium=referral