基于thinkphp6.0的success、error实现方法

 更新时间:2019年11月05日 11:12:47   作者:工学1号馆   我要评论
这篇文章主要介绍了基于thinkphp6.0的success、error实现方法,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

最近把项目升级到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实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • CI框架学习笔记(二) -入口文件index.php

    CI框架学习笔记(二) -入口文件index.php

    本文介绍的是CI框架的入口文件index.php的相关资料,需要的朋友可以参考下
    2014-10-10
  • 详解php实现页面静态化原理

    详解php实现页面静态化原理

    本篇文章主要介绍了详解php实现页面静态化原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • php结合飞信 免费天气预报短信

    php结合飞信 免费天气预报短信

    最近发现了一个飞信的API接口,为了好好利用这个资源制作了这个天气预报短信通知。
    2009-05-05
  • php字符编码转换之gb2312转为utf8

    php字符编码转换之gb2312转为utf8

    PHP输出页面时经常有乱码,怎么办呢?今天我就提供一个方法,可以自动判断php字符编码,把gbk或gb2312编码的字符串转为utf8 。
    2013-10-10
  • 分享个简单易懂且非常有用的laravel事件

    分享个简单易懂且非常有用的laravel事件

    这篇文章主要给大家介绍了一个简单易懂并且非常有用的laravel事件,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Laravel框架生命周期与原理分析

    Laravel框架生命周期与原理分析

    这篇文章主要介绍了Laravel框架生命周期与原理,结合实例形式总结分析了Laravel框架针对用户请求响应的完整运行周期、流程、原理,需要的朋友可以参考下
    2018-06-06
  • PHP大神的十大优良习惯

    PHP大神的十大优良习惯

    这篇文章主要告诉大家PHP大神是如何养成的,php程序员的十大优良习惯,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Yii框架创建cronjob定时任务的方法分析

    Yii框架创建cronjob定时任务的方法分析

    这篇文章主要介绍了Yii框架创建cronjob定时任务的方法,结合具体实例形式分析了Yii定时任务相关配置、实现步骤与注意事项,需要的朋友可以参考下
    2017-05-05
  • php函数重载的替代方法--伪重载详解

    php函数重载的替代方法--伪重载详解

    对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。而弱类型本来就不区分,所以无法通过这些来实现。但是,可以通过下面的方法来实现简单的伪重载吧。
    2015-05-05
  • 利用PHP将图片转换成base64编码的实现方法

    利用PHP将图片转换成base64编码的实现方法

    相信大家都知道Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,如果对此不清楚的可以查看RFC2045~RFC2049,上面有MIME的详细规范。这篇文章我们分享一个PHP将图片转换为base64编码格式的方法,有需要的朋友们可以参考借鉴。
    2016-09-09

最新评论