基于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中函数内引用全局变量的方法
Oct 20 PHP
php MYSQL 数据备份类
Jun 19 PHP
php 运行效率总结(提示程序速度)
Nov 26 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
php获取字段名示例分享
Mar 03 PHP
ThinkPHP缓存方法S()概述
Jun 13 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
PHP常用的排序和查找算法
Aug 06 PHP
Zend Framework实现多文件上传功能实例
Mar 21 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
PHP 对象接口简单实现方法示例
Apr 13 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安装问题
2006/10/09 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
微信API接口大全
2015/04/15 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
Python中统计函数运行耗时的方法
2015/05/05 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
Django中ORM的基本使用教程
2020/12/22 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
法院干警四风问题自我剖析材料
2014/09/29 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
实践论读书笔记
2015/06/29 职场文书