V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
konakona
V2EX  ›  程序员

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

  •  
  •   konakona ·
    54853315 · 2014-08-09 03:12:29 +08:00 · 7709 次点击
    这是一个创建于 3616 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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~~?

    7 条回复    2014-08-09 15:20:20 +08:00
    yangqi
        1
    yangqi  
       2014-08-09 03:16:07 +08:00
    withInput()放在最后试试,即

    return Redirect::back()->withErrors()->withInput();
    konakona
        2
    konakona  
    OP
       2014-08-09 03:19:52 +08:00
    @yangqi 这个顺序好像不是问题所在,不过我还是尝试了下。问题没有解决。
    konakona
        3
    konakona  
    OP
       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
        4
    yangqi  
       2014-08-09 03:37:23 +08:00
    Redirect:back()是通过302跳转到referer地址,你单独试是好的说明问题不在这里。

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

    withErrors($validator- >messages());
    我怎么觉得你这个中间多了个空格?
    konakona
        7
    konakona  
    OP
       2014-08-09 15:20:20 +08:00
    @yangqi 有空格的话IDE和程序都会报错的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1265 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:13 · PVG 07:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.