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

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

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

在做角色权限或者登录的时候我们需要判断是否登录,这时我们可能会用到重定向跳转,但是你会发现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的Ajax分页加搜索查询

Thinkphp的Ajax分页加搜索查询

搜索#keyword和加载内容区域#ajax_lists<input type="text" class="input" id="keyword"...

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

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

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

基于Thinkphp的在线工具箱1.3开源

基于Thinkphp的在线工具箱1.3开源

更新介绍:1、翻修更新大部分工具样式及功能2、前端增加一套卡片主题(mdui)3、后台登录增加极验验证码4、后台一键上传、一键安装、在线应用中心5、修复删除工具(删除工具文件)6、后台个性主题管理7、增加全局参数防护8、取消后台统计代码设置...

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

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

发表评论

访客

看不清,换一张

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