thinkphp6中不能使用redirect方法进行重定向的解决方法

2022-06-09 11:21 栏目:技术开发 查看(12989)

在以为的tp版本中,在很多场景需要使用redirect等方法进行重定向,但是在tp6版本已经默认取消了这些方法,原因在于在tp6中think\Controller类取消了,由此导致原来的success、error、redirect和result等方法都被剔除。这一点在tp框架官方文档的升级指导篇中有说明:

QQ截图20220609104612

如果需要按老版本的习惯使用这些方法,需要手动安装扩展类予以支持,安装命令行如下:

composer require liliuwei/thinkphp-jump

安装后在使用success、error、redirect和result等方法方法前需要先调用对应的类:

use \liliuwei\think\Jump;

实际上在tp6中提供了一个redirect助手函数:

function redirect(string $url = '', int $code = 302): Redirect
{
    return Response::create($url, 'redirect', $code);
}

可以这样使用:

return redirect('项目内网址');

但这个方法似乎只支持本项目内的路径,如跳转到第三方是不被支持的。其实我们也可以手动建立一个基类Base,然后在基类中,自定义一个redirect方法,如下:

public function redirect($url){
    if(dstrpos($url,ROOT)===false){
      $url=HOST.$url;
     }
     header('location:'.$url);
     die;
}

然后跟tp5一样直接使用$this->redirect()来调用。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:thinkphp6中不能使用redirect方法进行重定向的解决方法 - 微构网络
分享: