Return 重定向正文 Laravel
Return Redirect with body in Laravel
我正在尝试对 Laravel 中的正文进行重定向。我试过这个:
return Redirect::to($log_in_url)->with('body','<html><head><title>Redirecting to your page</title></head><body>If you are not redirected within 5 seconds, please <a href="'.$log_in_url.'">cl ick here</a>.</body></html>');
我查看了“网络”选项卡,我什么也没看到。
问题是如何通过在实际重定向发生之前显示 HTML 等待页面来延迟重定向?
这不是 Laravel 的任务。您可以只使用 return 元页面,或使用 javascript.
// Controller
return view('redirect');
// View redirect.blade (Regular html page with additional meta tag)
<meta http-equiv="refresh" content="5;url=http://www.google.com/" />
您做出了一些错误的假设:
with
方法将事物放入会话中,以便您可以在 重定向后访问它。一个常见的用例是设置消息然后重定向用户。
- 不要指望仅仅通过设置就可以得到魔法
body
。
- 没有您所说的称为 "redirect with body" 的标准化重定向。如果你需要这样的东西,你必须实现它。
我假设您正在考虑其中一种类似于 vBulletin 的重定向样式。要在 Laravel 上下文中实现它,您需要一个中介视图在一定延迟后为您执行客户端重定向。我们将其命名为 redirect.blade.php
:
<!doctype html>
<html lang="en">
<head>
<title>Redirecting...</title>
<script>
window.setTimeout(function () {
window.location = "{{ $url }}";
}, 5000);
</script>
</head>
<body>
If you are not redirected within 5 seconds,
please <a href="{{ $url }}">click here</a>.
</body>
</html>
有了这个,你的控制器将传递一个 $url
到这个中介视图并让它被呈现以进行客户端重定向:
# Controller method
return view('redirect', ['url' => $log_in_url])
如果 JavaScript 被禁用,这种重定向方式将不起作用,这就是他们将 link 放入页面内容并警告用户的原因。
有些采用混合方法:
<noscript>
<meta http-equiv="refresh" content="5;url={{ $url }}" />
</noscript>
他们最初不使用刷新 header/meta 标记的原因是它没有在 HTTP 标准中指定。 Read more.
我强烈建议您考虑替代方案。这是 1990 年的事,一点也不方便用户使用。
作为访问者,如果我遇到一个让我等待 5 秒的网站,我就会离开。这就是为什么人们过去常常制作浏览器扩展来解决 vBulletin 的登录屏幕等待时间!
拥抱简单,只做一个常规的 HTTP 重定向。这对全人类都是最好的。
我正在尝试对 Laravel 中的正文进行重定向。我试过这个:
return Redirect::to($log_in_url)->with('body','<html><head><title>Redirecting to your page</title></head><body>If you are not redirected within 5 seconds, please <a href="'.$log_in_url.'">cl ick here</a>.</body></html>');
我查看了“网络”选项卡,我什么也没看到。
问题是如何通过在实际重定向发生之前显示 HTML 等待页面来延迟重定向?
这不是 Laravel 的任务。您可以只使用 return 元页面,或使用 javascript.
// Controller
return view('redirect');
// View redirect.blade (Regular html page with additional meta tag)
<meta http-equiv="refresh" content="5;url=http://www.google.com/" />
您做出了一些错误的假设:
with
方法将事物放入会话中,以便您可以在 重定向后访问它。一个常见的用例是设置消息然后重定向用户。- 不要指望仅仅通过设置就可以得到魔法
body
。 - 没有您所说的称为 "redirect with body" 的标准化重定向。如果你需要这样的东西,你必须实现它。
我假设您正在考虑其中一种类似于 vBulletin 的重定向样式。要在 Laravel 上下文中实现它,您需要一个中介视图在一定延迟后为您执行客户端重定向。我们将其命名为 redirect.blade.php
:
<!doctype html>
<html lang="en">
<head>
<title>Redirecting...</title>
<script>
window.setTimeout(function () {
window.location = "{{ $url }}";
}, 5000);
</script>
</head>
<body>
If you are not redirected within 5 seconds,
please <a href="{{ $url }}">click here</a>.
</body>
</html>
有了这个,你的控制器将传递一个 $url
到这个中介视图并让它被呈现以进行客户端重定向:
# Controller method
return view('redirect', ['url' => $log_in_url])
如果 JavaScript 被禁用,这种重定向方式将不起作用,这就是他们将 link 放入页面内容并警告用户的原因。
有些采用混合方法:
<noscript>
<meta http-equiv="refresh" content="5;url={{ $url }}" />
</noscript>
他们最初不使用刷新 header/meta 标记的原因是它没有在 HTTP 标准中指定。 Read more.
我强烈建议您考虑替代方案。这是 1990 年的事,一点也不方便用户使用。
作为访问者,如果我遇到一个让我等待 5 秒的网站,我就会离开。这就是为什么人们过去常常制作浏览器扩展来解决 vBulletin 的登录屏幕等待时间!
拥抱简单,只做一个常规的 HTTP 重定向。这对全人类都是最好的。