2016-05-06 16 views
1

私はLaracasts Flashパッケージを使用してユーザーにフラッシュメッセージを表示します。しかし、問題があります:1つのリダイレクト後にフラッシュ値がなくなってしまいます。私がSession::set();で設定した値はまだそこにあります。私はすべてのコントローラーでWebミドルウェアを使用し、さらにStartSessionクラスも含んでいます。 リダイレクトさえも、->withInputはリダイレクト後に消えてしまいます。私は値を取得しようとLaravel 5.2:リダイレクト後にセッションのFlash値がなくなった

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にアクセスできます。 –

+0

ありがとうございますが、フラッシュメッセージがどのように動作しているかわかります。問題は次の要求ですが、依然として消えています。 – mrHooty

+0

https://laracasts.com/series/laravel-5-from-scratch/episodes/15 - このリンクをクリックすると、より良い結果が得られます。 –

答えて

2

:テイラーOtwellはでいくつかの変更を加えた

セット:

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

がテストをルートサービスプロバイダ。現在、すべてのルートにデフォルトでWebミドルウェアが適用されています。私はこのアップデート(2016年3月23日)の前にしなければならなかったように、再度それを割り当てて、フラッシュ値を破棄します。

So:すべての手動Webミドルウェア割り当てを削除します。その後、それは動作します。

0

フラッシュメッセージが消えた孤独な理由は、複数のリダイレクトが必要なため、フラッシュ内のデータが消去されるためです。

あなたは、このようにだけフラッシュメッセージのvar_dumpしようとすることができます:私は答えを見つけた

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

は "null"です。なぜ複数のリクエストが必要なのか、私は説明できません。 – mrHooty

関連する問題