我可能会完全错误地认为,但我的印象是redirect()->send()
会强制应用停止并重定向用户。事实证明,它确实可以做到,但不是全部。
假设我们具有以下功能。
function validate()
{
$validator = ... // a working implementation
if ($validator->fails()) {
redirect()->back()->withErrors($validator)->withInput()->with(['_type' => $type])->send();
}
}
可以在执行请求期间调用此函数。如果成功,则什么也不会发生。
示例用例是这样:
function something(Request $request)
{
$this->validate();
\Log::debug('Running like a mad man!');
}
如果validate()
没有失败,则应记录一条调试消息。如果确实失败,我们希望它重定向。
我们当然可以在something()
中添加逻辑,但我们不愿意。
在我们的情况下,Log::debug
始终运行。起初我以为它只发生在Laravel 5.8中,但是显然我们在旧版本中也遇到了这个问题。
重定向后,您不能使用die()
或类似的命令,因为它会返回419。我不熟悉Laravel内部原理,但我想它没有机会设置会话。
这是我们无需在something()
中添加逻辑就可以解决的问题吗?
您应该return redirect()->back()...