基于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 相关文章推荐
用PHP和ACCESS写聊天室(八)
Oct 09 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
PHP生成压缩文件实例
Feb 07 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
python使用mysql的两种使用方式
2018/03/07 Python
使用matplotlib画散点图的方法
2018/05/25 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
python 实现单例模式的5种方法
2020/09/23 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
梅花魂教学反思
2014/04/25 职场文书
搞笑爱情保证书
2014/04/29 职场文书
小学校本培训方案
2014/06/06 职场文书
跑操口号
2014/06/12 职场文书
护理学专业求职信
2014/06/29 职场文书
网络技术专业求职信
2014/07/13 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
董事长秘书工作总结
2015/08/14 职场文书
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB