基于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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
php获取地址栏信息的代码
Oct 08 PHP
将数组写入txt文件 var_export
Apr 21 PHP
PHP禁止页面缓存的代码
Oct 23 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
Oct 29 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
php算法实例分享
Jul 14 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
PHP实现微信提现功能(微信商城)
Nov 21 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
全文搜索和替换
2006/10/09 PHP
php mysql 封装类实例代码
2016/09/18 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
JS继承用法实例分析
2015/02/05 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
Node.js实现文件上传
2016/07/05 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
python正则表达式match和search用法实例
2015/03/26 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
经典团队口号
2014/06/06 职场文书
自查自纠整改报告
2014/11/06 职场文书
春秋淹城导游词
2015/02/11 职场文书
MySQL新手入门进阶语句汇总
2022/09/23 MySQL