laravel return Redirect::back() doesn't work

2014-08-09 03:12:29 +08:00
 konakona

当以下路由时控制器返回无效:

Route::post('/new/save', 'RoomsController@save');

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

无法返回。

单独在路由中进行语句效果测试:

Route::post('/new/save', function(){
    return Redirect::back()->withInput();
});

有效,立即返回了。

简而言之:就是在Controller中使用return Redirect::back() 没有任何反应,采用echo Redirect::back()的话,会显示一些多余的信息(即header输出),然后才跳转:

HTTP/1.0 302 Found Cache-Control: no-cache Date: Fri, 08 Aug 2014 18:49:35 GMT Location: http://*******/new/sell Redirecting to http://******/new/sell.

Why~~?

7713 次点击
所在节点    程序员
7 条回复
yangqi
2014-08-09 03:16:07 +08:00
withInput()放在最后试试,即

return Redirect::back()->withErrors()->withInput();
konakona
2014-08-09 03:19:52 +08:00
@yangqi 这个顺序好像不是问题所在,不过我还是尝试了下。问题没有解决。
konakona
2014-08-09 03:21:25 +08:00
Laravel的资料实在是太少了,这样的用法也是我从http://forumsarchive.laravel.io/ stackoverflow.com 上找到的,有注明是4可用。

为啥就不起做用呢?完整的控制器中方法是这样的:



protected function doBuildNewRoom()
{
$validator = Validator::make(Input::all(), Rooms::$createRules);

if ($validator->fails()) {
return Redirect::back()->withErrors($validator->messages())->withInput();
} else {
$model = new Rooms();
$model->create_time = time();
var_dump($model->create(Input::all()));
$model->save();
AppHelper::showMessage('发布成功!', [], 1);
}
}
yangqi
2014-08-09 03:37:23 +08:00
Redirect:back()是通过302跳转到referer地址,你单独试是好的说明问题不在这里。

你看了你的$validator能正确返回么?
konakona
2014-08-09 03:48:18 +08:00
@yangqi 进入了if,而不是else。
yangqi
2014-08-09 03:59:40 +08:00
然后呢, 没反应还是什么情况,laravel自己的Log看了么?

withErrors($validator- >messages());
我怎么觉得你这个中间多了个空格?
konakona
2014-08-09 15:20:20 +08:00
@yangqi 有空格的话IDE和程序都会报错的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/126882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX