基于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 日志缩略名的创建函数代码
May 26 PHP
preg_match_all使用心得分享
Jan 31 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
PHP通过串口实现发送短信
Jul 08 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
php实现在线考试系统【附源码】
Sep 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
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
js实现文字滚动效果
2016/03/03 Javascript
JS作用域深度解析
2016/12/29 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
vue最简单的前后端交互示例详解
2018/10/11 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
python snownlp情感分析简易demo(分享)
2017/06/04 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
夏季药店促销方案
2014/08/22 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
先进工作者个人总结
2015/02/15 职场文书
清洁员岗位职责
2015/02/15 职场文书
转正申请报告格式
2015/05/15 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
HttpClient实现表单提交上传文件
2022/08/14 Java/Android