2014-06-25 153 views
1

這裏是我的代碼,以保持數據的形式保存。Laravel輸入::閃光燈()如何檢索閃光燈值

Route::any('test', function(){ 
    if (Request::isMethod('post')){ 
     //return Redirect::back()->withInput(); 
     return Redirect::to('test2')->withInput(); 
    } 
    else { 
     return View::make('home'); 
    } 
}); 
Route::get('test2', function(){ 
    return var_dump(Input::all()); // Getting Empty Array here. 
}); 

我只是做了一個單一的輸入name ='email'併發布它。當重定向到另一個網頁,其不使用Redirect::to('test2')->withInput();

<form action="" method="post"> 
    <input type="text" name="email" value="" placeholder="Your Email"> 
    <input type="submit" value="Submit" /> 
</form> 

我很困惑轉發的投入,如何使用Input::flash()Redirect::to('test2')->withInput();

回答

2

Exammple:

Route::any('test', function(){ 
     if (Request::isMethod('post')){ 
      Input::flash(); 
      return Redirect::back(); 
      // return Redirect::back()->withInput(); 
     } 
     else { 
      if(Input::old('email'))return Input::old(); //::old is only accessible when we did ::flash() or ::withInput() 
      return View::make('home'); 
    } 
}); 

要檢索錯誤等形式的數據使用

Input::old() 

和輸入::老()將從來沒有

Redirect::back()->withInput() 

工作
Input::flash(); 
return Redirect::back(); 

詳細代碼附於評論

2

當您使用Redirect::to()->withInput()是什麼做的是把的Input::all()當前狀態到一個會話變量爲以後訪問(它重新提交輸入或類似的東西)。因此,在新的重定向的請求中,您不能使用Input:all()(因爲它沒有重新發布)訪問相同的輸入,但現在它的輸入爲Input::old()。就像一個FLAHS變量,它只能提供一個請求,所以,如果你想重新刷新它,你可能需要或者做Session::reflash()或者你可能能夠對->withInput()再次(儘管我對此表示懷疑,因爲新的Input::all()是空的)。

希望這是有道理的。基本上你的'test2'路線需要使用Input::old()

所有這一切說,如果你正在重定向POST請求,然後通過Input::old()來處理 - 那可能是你做的不太對,這不是這個構造的真正目的。當然,如果你只是在玩這個框架,那麼你可以隨心所欲地做任何事情。

+0

你做工作,解釋我解答,謝謝。我明白你的意思。你可以用例如使用Redirect :: to() - > withInput()和Input :: flash()來修改答案。我很困惑如何返回兩個Redirect ::並且還查看:: Make在單個路由中。 –

+0

非常感謝,很好的幫助。花了一點時間才明白,但做到了。 +1 –

+0

很高興幫助你找到自己的答案。 – alexrussell