基于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 相关文章推荐
mysql5写入和读出乱码解决
Nov 25 PHP
php中的时间显示
Jan 18 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
浅析PHP绘图技术
Jul 03 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
实例讲解php数据访问
May 09 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
PHP运行模式汇总
Nov 06 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
php设计模式之单例模式使用示例
2014/01/20 PHP
php操作mongoDB实例分析
2014/12/29 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
使用python分析git log日志示例
2014/02/27 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python散点图实例之随机漫步
2018/08/27 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
为什么相对PHP黑python的更少
2020/06/21 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
对祖国的寄语大全
2014/04/11 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers