当我试图把redirect放在一个方法里面时,它不会重定向,但是如果我直接把redirect放在里面,它就会重定向。请看下面我的代码。
正在检查方法- * 此方法将在会话为空时重定向 *
private function loadIdChecker()
{
if(session('load_id') === null) {
return redirect()->route('load-calculator');
}
}
用户查看方法(不工作)
public function users()
{
$this->loadIdChecker();
... The rest of the code here
}
用户查看方法(WORKING)
public function users()
{
if(session('load_id') === null) {
return redirect()->route('load-calculator');
}
}
4条答案
按热度按时间8e2ybdfx1#
在
users()
函数中尝试使用:return $this->loadIdChecker();
而不是$this->loadIdChecker();
。出现此错误的原因是,在您的原始代码中,
users
函数没有返回任何内容,而它应该返回一些内容...km0tfn4u2#
只有当你把重定向示例给Laravel的响应处理器时,重定向才能正常工作。现在,它只返回一个
Illuminate\Http\RedirectResponse
的示例。所以,***如果***出于某种原因,你不想改变加载检查器的方法体,你可以在结尾添加一个额外的改变,比如返回true
或者其他什么,来判断响应中的差异,如下所示:然后,在您的代码中,您可以检查如下内容:
解决这个问题的最好方法是使用一个中间件来检查
load_id
,如果load_id
为空,则重定向到load-calculator
页面。不推荐通过方法处理重定向,特别是当它是某种身份验证检查时。b5lpy0ml3#
您必须添加一个return语句(并且可能还要考虑load_id!== null的情况)。
pw9qyyiw4#
这对我有用
逻辑只是删除return并添加echo,它将显示重定向链接,但它工作正常