基于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 09 PHP
PHP集成FCK的函数代码
Sep 27 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
thinkphp实现图片上传功能
Jan 13 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
PHP面向对象程序设计之对象的遍历操作示例
Jun 12 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php笔记之:php数组相关函数的使用
2013/04/26 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
JavaScript运算符小结
2015/06/03 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
vue在线动态切换主题色方案
2020/03/26 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
Python 实现微信防撤回功能
2019/04/29 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
python中最小二乘法详细讲解
2021/02/19 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
大学专科生推荐信范文
2013/11/23 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
2015年电工工作总结
2015/04/10 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书