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のバグですか、それとも意図的なのでしょうか。私はこの事実の根本的な原因を知りたいと思っています。おかげ
'session()'メソッドは 'dd()'の直前にセッションに値を保存していませんか?その実装を完了するために必要な操作は他にあります。 – Imran
いいえ、Laravelはまずセッションに書き込む必要があるすべてのデータを収集し、ユーザーコードの実行後に保存します。しかし、セッションを強制的に強制的に保存することができます: 'session(['key' => 'value']); session() - > save(); ' – Anton
これは、セッションデータが' Terminable Middleware'によって書き込まれるためです。これは、@Antonが説明しているものです。 – Ohgodwhy