基于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 相关文章推荐
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
解析php中的escape函数
Jun 29 PHP
php字符串截取的简单方法
Jul 04 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
php定期拉取数据对比方法实例
Sep 22 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
硕士研究生自我鉴定
2013/11/08 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
社区矫正工作方案
2014/06/04 职场文书
忠诚教育心得体会
2014/09/03 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2016春季运动会前导词
2015/11/25 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
Python深度学习之实现卷积神经网络
2021/06/05 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL