Laravel使用Livewire时,带中间件的路由出现Redirect类型错误
Laravel使用Livewire时,带中间件的路由出现Redirect类型错误
嗨,我之前帮朋友排查过几乎一模一样的问题,一看你报的错就知道大概是哪儿出问题了!
这个错误的根源是你在bootstrap/app.php文件第33行附近的那个全局响应处理闭包,参数的类型声明太“死板”了。你看哈,当你未登录就访问/dashboard这类需要认证的路由时,Laravel会自动返回一个RedirectResponse(跳转到登录页),但那个闭包却要求参数必须是Illuminate\Http\Response类型——可这俩虽然都是响应类,但在Laravel的类结构里是同层级的兄弟类,不是父子关系,所以严格的类型检查就直接报错了。
给你个简单的解决办法:
- 打开项目里的
bootstrap/app.php文件,找到报错提示里的那个闭包函数(大概在第33行左右) - 把函数参数里的类型声明
Illuminate\Http\Response,替换成Symfony\Component\HttpFoundation\Response——这个是所有Laravel响应类的共同父类,不管是普通响应还是跳转响应都能匹配上;或者也可以换成Illuminate\Contracts\Support\Responsable契约,效果是一样的 - 改完之后记得重启你的本地服务(比如用
php artisan serve启动的服务,关掉重开一次),再去测试就没问题了
另外提醒一下,如果你之后还要加其他自定义响应类型,用父类或者契约来做类型声明,就不会再碰到这类类型不匹配的坑啦~
内容来源于stack exchange
相关产品推荐
相关产品推荐

