基于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 相关文章推荐
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
Aug 09 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
php如何实现只替换一次或N次
Oct 29 PHP
浅谈php处理后端&接口访问超时的解决方法
Oct 29 PHP
thinkphp关于简单的权限判定方法
Apr 03 PHP
laravel框架模型、视图与控制器简单操作示例
Oct 10 PHP
PHP7 弃用功能
Mar 09 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
Window下PHP三种运行方式图文详解
2013/06/11 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP常用的小程序代码段
2015/11/14 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
JavaScript For Beginners(转载)
2007/01/05 Javascript
jquery提升性能最佳实践小结
2010/12/06 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
javascript实现密码验证
2015/11/10 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
Python序列操作之进阶篇
2016/12/08 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
Python实现随机爬山算法
2021/01/29 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
主题婚礼策划方案
2014/02/10 职场文书
办公室岗位职责
2014/02/12 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS