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


Posted in PHP onNovember 05, 2019

最近把项目升级到tp6.0,一开始比较顺利,安装文档升级,但是升级指导指出:

系统不再提供基础控制器类 think\Controller ,原来的 success 、 error 、 redirect 和 result 方法需要自己在基础控制器类里面实现。

这意味着需要自己来实现原来的一系列的函数

我这里参考to5.1的跳转源码,进行改进得到,具体步骤如下:

1、app目录下新建一个tpl文件夹,放入dispatch_jump.tpl文件,这个可以直接到原来的tp5中copy

2、在config文件夹的app.php中添加配置模板文件的路径

// 默认跳转页面对应的模板文件
  'dispatch_success_tmpl' => app()->getRootPath() . '/app/tpl/dispatch_jump.tpl',
  'dispatch_error_tmpl'  => app()->getRootPath() . '/app/tpl/dispatch_jump.tpl',

3、在基类BaseController中添加下面的代码:

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实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
做个自己站内搜索引擎
Oct 09 PHP
PHP开发文件系统实例讲解
Oct 09 PHP
在PHP中读取和写入WORD文档的代码
Apr 09 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
PHP中的strtr函数使用介绍(str_replace)
Oct 20 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
PHP 等比例缩放图片详解及实例代码
Sep 18 PHP
基于laravel缓冲cache的用法详解
Oct 23 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 #PHP
详解Laravel服务容器的绑定与解析
Nov 05 #PHP
php+laravel依赖注入知识点总结
Nov 04 #PHP
PHP保存Base64图片base64_decode的问题整理
Nov 04 #PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 #PHP
laravel返回统一格式错误码问题
Nov 04 #PHP
php 中self,this的区别和操作方法实例分析
Nov 04 #PHP
You might like
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
php实现微信发红包功能
2018/07/13 PHP
jQuery插件开发基础简单介绍
2013/01/07 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
ES6 class的应用实例分析
2019/06/27 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Django 再谈一谈json序列化
2020/03/16 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python生成器generator原理及用法解析
2020/07/20 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
自我鉴定范文200字
2013/10/02 职场文书
出纳的岗位职责
2013/11/09 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
老公保证书范文
2014/04/29 职场文书
会计人员演讲稿
2014/09/11 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书