2017-06-04 11 views
1

laravel 5.4を使用しています。コントローラのメソッドでは、私はセッションで値を設定しています。セッションを設定した直後にdd()と呼ぶと、ちょうど設定したセッションですべてのセッションがdd()に表示されます。しかし、別のメソッドからセッションを取得した場合、そのセッションは利用できません。セッションセッターメソッドからdd()を削除すると、セッションが正しく取得されています。daraメソッドが使用されている場合、Laravel 5.4セッションが設定されていません

マイコードは以下の通りです:

public class TestController{ 
    public function setSession(){ 
    session(['test_key' => 'test_value']);//setting up the session 
    dd(session()->all());//getting the session properly here 
    } 

    public function showSession(){ 
    dd(session()->all());//Here we are not getting the session 
    } 
} 

我々はsetSession()セッションからdd()を削除した場合、それが正常に動作します。それはLaravelのバグですか、それとも意図的なのでしょうか。私はこの事実の根本的な原因を知りたいと思っています。おかげ

答えて

3

dd()は「&ダイをダンプ」を意味し、すぐにフレームワークを終了し、Laravelが正しく要求を完了し、セッションを保存することはできません、その実装にdie()を使用しています。 dump()を使用してdd()のような情報を表示できます。その後はカーネルをシャットダウンしません。

+0

'session()'メソッドは 'dd()'の直前にセッションに値を保存していませんか?その実装を完了するために必要な操作は他にあります。 – Imran

+0

いいえ、Laravelはまずセッションに書き込む必要があるすべてのデータを収集し、ユーザーコードの実行後に保存します。しかし、セッションを強制的に強制的に保存することができます: 'session(['key' => 'value']); session() - > save(); ' – Anton

+0

これは、セッションデータが' Terminable Middleware'によって書き込まれるためです。これは、@Antonが説明しているものです。 – Ohgodwhy

1

は(setSessionからdd(session()->all())

この行を削除)して、もう一度それを試してみてください。

+0

私はこの行を削除した後に動作することを知っています。しかし、私の疑問はなぜこれが機能していないのですか?私はここでセッションをダンプするだけですか? – Imran

+0

ええ、あなたは正しいです。 ddはあなたがすでに知っているダンプと死を意味します。 ): –

関連する問題