Laravel 4 - 重定向回到请求来源的同一页面

Abh*_* PS 30 php laravel laravel-4

在Laravel 4中,我想将用户重定向回请求所在的页面.例如,用户尝试更新其个人资料,以便编辑个人资料并点击"保存".在控制器中我做更新,通常我会这样做Redirect::to('profile')->with('message','Profile saved!').但我想要的是简单地将其重定向回信息.可能是这样的Redirect::back()->with('message','Operation Successful !')话.我想要它,因为它更通用,我可以在任何地方使用它.

Ant*_*iro 75

是的,这是可用的:

return Redirect::back()->with('message','Operation Successful !');
Run Code Online (Sandbox Code Playgroud)

但由于这是重定向的请求,您必须使用以下命令来访问该消息:

echo Session::get('message');
Run Code Online (Sandbox Code Playgroud)

  • 我来晚了一分钟;)...给你一个提示@DennisBraga如果你不确定会话变量的存在,你可以提供一个后备,如Session :: get('name','fallback').这让我头疼不已. (2认同)

Eri*_*bar 19

简而言之:是的

你当然可以使用

Redirect::back()->withMessage('Profile saved!')

代替

Redirect::to('profile')->withMessage('Profile saved!')

*Laravel中的漂亮功能,它解析你的camelCase,->with('name', 'value')所以它的->withName('value')工作原理是一样的.

也....

我假设您的表单已绑定到模型,例如Form::model($user, [...]预填表单字段,但如果不是,您可能需要重新刷新重定向上的输入(或者如果您的验证失败并且您希望用户能够纠正无效信息).

只是一个片段[未经测试] ......

// [[... validation and other magic here]]

if ($validator->fails()) {
    return Redirect::back()
        ->withMessage($message_fail)
        ->withErrors($validator)
        ->withInput();
}

return Redirect::back()
        ->withMessage($message_success)
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!

Twitter:@ErikOnTheWeb


chr*_*423 5

你应该考虑不要使用Redirect::back().是的,它很诱人,似乎正是你所需要的.但:

back()方法使用请求标头的"referer"属性.因此,用户代理(通常是浏览器)告诉服务器(和Laravel)他来自的URL.(正如维基百科所说:referer是引用者的拼写错误)但并非每个用户代理/浏览器都会提供此信息!我使用Opera,我不允许它一般传输引用!所以back()对我不起作用.(是的,我可以允许这个网站,但我很懒.抱歉,我不相信你的网站.)

  • 我讨厌开始一场哲学辩论,但你认为网站应该迎合你特定的配置吗?我的意思是,如果我们必须不断开发"假设"和少数设置,我们就会创造大量的开销,这在一般情况下甚至都没用. (7认同)
  • 还有安全隐患:恶意用户可以在"Referer"标题中添加他们喜欢的内容. (2认同)