基于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+xslt在windows平台上
Oct 09 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
Laravel实现用户注册和登录
Jan 23 PHP
Symfony生成二维码的方法
Feb 04 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
php实现批量修改文件名称的方法
Jul 23 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
php base64 编码与解码实例代码
Mar 21 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
CI框架表单验证实例详解
2016/11/21 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
JavaScript之解构赋值的理解
2019/01/30 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
python抓取网页图片示例(python爬虫)
2014/04/27 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
中国制造网:Made-in-China.com
2019/10/25 全球购物
UNIX文件系统分类
2014/11/11 面试题
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
文明工地标语
2014/06/16 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
python数字转对应中文的方法总结
2021/08/02 Python
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL