在Laravel 4中,我想将用户重定向回请求所在的页面。例如,用户尝试更新其个人资料,以便编辑个人资料并点击“保存”。在控制器中我做更新,通常我会做Redirect::to('profile')->with('message','Profile saved!')
。但我想要的是简单地将其重定向回信息。如果可以的话,可能是Redirect::back()->with('message','Operation Successful !')
。我想要它,因为它更通用,我可以在任何地方使用它。
答案 0 :(得分:73)
是的,这是可用的:
return Redirect::back()->with('message','Operation Successful !');
但由于这是重定向的请求,您必须使用以下方式访问该消息:
echo Session::get('message');
答案 1 :(得分:19)
你当然可以使用
Redirect::back()->withMessage('Profile saved!')
取代
Redirect::to('profile')->withMessage('Profile saved!')
* 漂亮的功能,它会在->with('name', 'value')
上解析您的camelCase,以便->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)
希望有所帮助!
Twitter:@ErikOnTheWeb
答案 2 :(得分:5)
您应该考虑不使用Redirect::back()
。是的,它很诱人,似乎正是你所需要的。但是:
back()
方法使用请求标头的“referer”属性。因此,用户代理(通常是浏览器)告诉服务器(和Laravel)他来自的URL。 (正如维基百科所说:引用者是引用者的拼写错误)但并非每个用户代理/浏览器都会提供此信息!我使用Opera并且我不允许它一般传输引用者!所以back()
对我不起作用。 (是的,我可以允许这个网站,但我很懒。抱歉,我不相信你的网站。)
答案 3 :(得分:0)
return redirect()->action('HomeController@index');