基于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 相关文章推荐
我的论坛源代码(一)
Oct 09 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP如何将XML转成数组
Apr 04 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
php命令行写shell实例详解
Jul 19 PHP
php使用fullcalendar日历插件详解
Mar 06 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删除记录操作代码
2008/06/07 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
python简单读取大文件的方法
2016/07/01 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
np.random.seed() 的使用详解
2020/01/14 Python
《乞巧》教学反思
2014/02/27 职场文书
3的组成教学反思
2014/04/30 职场文书
党支部换届选举方案
2014/05/08 职场文书
个人求职自荐信范文
2014/06/20 职场文书
设备技术员岗位职责
2015/04/11 职场文书
国富论读书笔记
2015/06/26 职场文书
企业团队精神心得体会
2016/01/19 职场文书
python编写五子棋游戏
2021/05/25 Python