当前位置:首页 > 技巧大全 > 网站建设 > 正文内容

解决ThinkPHP6公共控制器Base无法使用redirect()重定向问题

Git开源网2022-03-31 22:17:10网站建设1893

在做角色权限或者登录的时候我们需要判断是否登录,这时我们可能会用到重定向跳转,但是你会发现TP6下构造方法下是无法重定向的,这是为何呢?

1、原因

这不是ThinkPHP6的BUG,这个问题不是BUG的原因是什么?原因是redirect()返回的是\think\response\Redirect对象,而此对象被app\BaseController类中的构造方法所获取。

vendor/topthink/framework/src/helper.php

if (!function_exists('redirect')) {
    /**
     * 获取\think\response\Redirect对象实例
     * @param string $url  重定向地址
     * @param int    $code 状态码
     * @return \think\response\Redirect
     */
    function redirect(string $url = '', int $code = 302): Redirect
    {
        return Response::create($url, 'redirect', $code);
    }
}

2、解决无法使用redirect()重定向问题,我们可以重写重定向方法,在Base控制器下加入以下方法

 /**
     * 自定义重定向方法
     * @param $args
     */
    public function redirectTo(...$args)
    {
        // 此处 throw new HttpResponseException 抛出异常重定向
        throw new HttpResponseException(redirect(...$args));
    }

3、使用方法

return $this->redirectTo((string)url('admin/Login/index'));


扫描二维码推送至手机访问。

版权声明:本文由Git开源网_git开源代码资源网_git开源博客发布,如需转载请注明出处。

本文链接:http://gitoscc.com/?id=862

标签: ThinkPHP

相关文章

下载安装ThinkPHP5.1框架的方法

下载安装ThinkPHP5.1框架的方法

由于ThinkPHP5.1的下载方式已经变为composer安装,在thinkphp.cn是无法下载到的(仍是5.0版本),本文教大家如何下载安装ThinkPHP5.1框架。第一步、下载安装composer访问https://www.php...

thinkphp5引入公共部分header、footer的方法详解

thinkphp5引入公共部分header、footer的方法详解

项目中需要用到引入公共导航、头部、底部、右边部分等等首先要弄清楚thinkphp5的配置项是哪个文件,众所周知:config.php,如下图所示只需要在配置项里配置里如下内容即可‘template‘      ...

Thinkphp内核笑话系统带6套PC模板和1套WAP模板+带火车头采集器+app源码

Thinkphp内核笑话系统带6套PC模板和1套WAP模板+带火车头采集器+app源码

thinkphp内核笑话系统带6套PC模板和1套WAP模板+带火车头采集器+app源码1、会员中心(发帖、审贴、动态、我的投稿、站内消息、我的礼品(积分记录、兑换记录)、个人资料(资料修改、头像修改、密码修改) 、关注)2、前台(笑点、登陆...

tp5(thinkPHP5)框架连接数据库的方法示例

这篇文章主要介绍了tp5(thinkPHP5)框架连接数据库的方法,结合实例形式较为详细的分析了基于thinkPHP5框架连接数据库的相关配置、数据读取、模板渲染等操作技巧1、配置文件目录 tp5\application\data...

thinkphp5.0-php登录超时检测功能的类

thinkphp5.0-php登录超时检测功能的类类库简介:主要介绍了php登录超时检测功能实例详解的相关资料(以thinkphp5.0版本为例),php登录超时问题,当用户超过一定时间没有操作页面时自动退出登录,原理是通过js进行访问判断...

ThinkPHP6.0版本正式发布,全面拥抱组件化开发趋势

以下为官方最新信息:ThinkPHP5.2版本正式变更为6.0版本主要考虑到新的架构调整变化较大以及不支持无缝升级这两大原因,官方正式宣布ThinkPHP5.2RC版本的版本号由原来的5.2变更为6.0(这一规划此前在核心成员中曾多次提及)...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。