我有一个 Laravel 构建的博客,要对帖子发表评论(如果您已注销),您必须登录。我放了一个这样的链接:
<a href="{{ URL::route('login') }}">login</a> to do this.
Run Code Online (Sandbox Code Playgroud)
这将重定向到登录表单,一旦填写并验证用户身份,我有这个:
return Redirect::intended('/');
Run Code Online (Sandbox Code Playgroud)
这会将用户带到主页,而不是他们打算访问的页面,在这种情况下,是他们单击login链接以进行评论的帖子所在的页面。在这种情况下,如何将它们返回到预期的 url?
实际上,Redirect::intended('/')如果会话中有可用的密钥,则工作正常,url.intended否则它会重定向到默认值URL,即您的情况“/”,因此您肯定没有将其URL放入会话中。要做到这一点,您可以URL使用如下方式将 放入会话中:
Session::put('url.intended', 'url...');
Run Code Online (Sandbox Code Playgroud)
因此,可能在登录链接中,您可以添加这样的查询字符串:
<a href="{{ URL::route('login') }}?intended=1">login</a>
Run Code Online (Sandbox Code Playgroud)
因此,您可以跟踪重定向,并在该路由的方法中(在 return 之前View)将前一个URL放入会话中,使用如下所示:
if(Input::get('intended')) {
Session::put('url.intended', URL::previous());
}
Run Code Online (Sandbox Code Playgroud)
然后在你从那里重定向之前,你应该URL使用这样的东西从会话中删除:
$intendedUrl = Session::get('url.intended', url('/'));
Session::forget('url.intended');
return Redirect::to($intendedUrl);
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题。此外,您可以查看此答案,可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
3413 次 |
| 最近记录: |