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

时间:2014-01-22 18:49:41

标签: php laravel laravel-4

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

4 个答案:

答案 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!')

Laravel中的

* 漂亮的功能,它会在->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');