基于thinkphp6.0的success、error实现方法
最近把项目升级到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
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。