2016-05-06 127 views
1

我使用Laracasts Flash包向我的用戶顯示閃存消息。但是,這是一個問題:在一次重定向後,閃存值消失了。值與我設置Session::set();仍然存在。我在每個控制器上使用網絡中間件,甚至包括StartSession類。 重定向後,即使重定向->withInput也不見了。Laravel 5.2:重定向後會話中的閃存值已消失

這裏是我的控制器:

public function update(Request $request) { 
    $profile = Auth::user()->profile; 

    $validator = Validator::make($request->all(), [ 
     'email' => ['email', 'unique:profiles,email,' . $profile->id, 'max:255'], 
    ]); 

    if($validator->fails()) { 
     var_dump("failed"); 
     return redirect()->back()->withInput($request->input())->withErrors($validator); 
    } 

    $profile->update($request->input()); 
    $profile->save(); 

    Flash::success('saved'); 
    \Session::set('test', 'testvalue'); 
    return redirect()->route('profile.edit'); 
} 

繼承人,我試圖讓該值的方法:

public function edit() { 
    $account = Auth::user(); 

    var_dump(\Session::all()); 
    return view('profile.edit', [ 
     'account' => $account, 
     'profile' => $account->profile, 
    ]); 
} 

testvalue仍然存在,但是閃光燈的消息已經一去不復返了。即使我試圖自己設置他們Session::flash();

任何想法該怎麼辦?

+0

我認爲閃存信息只存儲在下一個請求。它會在那之後消失。如果您想保留以供進一步使用,則需要在會話中存儲。你可以通過https://laravel.com/docs/5.2/session去了解flash消息的行爲 –

+0

謝謝,但我知道flash消息是如何工作的。問題:它的下一個請求,但它仍然消失。 – mrHooty

+0

https://laracasts.com/series/laravel-5-from-scratch/episodes/15 - 這個鏈接可能會幫助你更好。 –

回答

2

我找到了答案:泰勒Otwell做了一些改動,在路線服務提供者。現在,每條路線都默認應用了Web中間件。在此更新之前(2016年3月23日)再次指派它將丟棄閃光值。

因此:刪除每個手動的Web中間件任務。然後它會工作。

0

閃光消息消失的原因之一,這是因爲它必須有多個重定向,所以閃存中的數據被擦除。

你可以嘗試的var_dump這樣,只有閃光燈消息:

集:

Session::flash('success', 'saved'); 

測試:

var_dump(Session::get('success')); 
+0

其「null」。我無法解釋爲什麼應該有多個請求。 – mrHooty