基于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的数组与字符串的转换函数整理汇总
Jul 18 PHP
php获取文件大小的方法
Feb 26 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
php 5.6版本中编写一个PHP扩展的简单示例
Jan 20 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
php算法实例分享
Jul 14 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
Yii2框架制作RESTful风格的API快速入门教程
Nov 08 PHP
php实现的生成排列算法示例
Jul 25 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 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
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
php网页病毒清除类
2014/12/08 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
js获取url参数值的两种方式
2013/09/10 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
Javascript浅谈之this
2013/12/17 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
python中提高pip install速度
2020/02/14 Python
了解一下python内建模块collections
2020/09/07 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
视图的作用
2014/12/19 面试题
受欢迎的大学生自我评价
2013/12/05 职场文书
日语求职信范文
2013/12/17 职场文书
学历公证委托书
2014/04/09 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
vue使用watch监听属性变化
2022/04/30 Vue.js
MySQL主从切换的超详细步骤
2022/06/28 MySQL