基于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作的文本留言本的例子(五)
Oct 09 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
使用php-timeit估计php函数的执行时间
Sep 06 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
php cookie 详解使用实例
Nov 03 PHP
PHP解决中文乱码
Apr 28 PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 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下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
Ajax基础知识详解
2017/02/17 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
vue实例的选项总结
2020/06/09 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Python中将字典转换为列表的方法
2016/09/21 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
详解Python传入参数的几种方法
2019/05/16 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
python 制作网站小说下载器
2021/02/20 Python
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
创立科技Java面试题
2015/11/29 面试题
大学生志愿者感言
2014/01/15 职场文书
信用卡工资证明范本
2014/10/17 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python