基于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生成静态页面详解
Dec 05 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
php使用curl打开https网站的方法
Jun 17 PHP
CI框架简单邮件发送类实例
May 18 PHP
Laravel日志用法详解
Oct 09 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
Apr 26 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 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
PHPMailer邮件发送的实现代码
2013/05/04 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
php微信开发之谷歌测距
2018/06/14 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
ipad上运行python的方法步骤
2019/10/12 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
自荐信的基本格式
2014/02/22 职场文书
爱护公共设施的标语
2014/06/24 职场文书
个人授权委托书格式
2014/08/30 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
html实现弹窗的实例
2021/06/09 HTML / CSS