基于thinkphp6.0的success、error实现方法

吾爱主题 阅读:119 2021-09-16 15:39:00 评论:0

最近把项目升级到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.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容