私は現在、Laravelがフラッシュデータを扱うのと同様に、セッションデータをフラッシュする方法を実装しようとしています。私は、Laravelがsession_startのような関数によって呼び出されているネイティブセッションメソッドをオーバーライドすることを知っています。Laravelはセッションフラッシュデータをどのように設定しないのですか?
セッションのためにopen
、read
、write
などのカスタムメソッドを作成することで、symfonyのHttp foundation
パッケージでこれを行うようです。これはsession_set_save_handler
を使用して行われます:あなたは、あなたがセッションを開始またはセッションへの書き込みがあったときのために開いているロジックを実装することができ、その関数を使用することにより
http://php.net/manual/en/function.session-set-save-handler.php
。しかし、これまでのところ、フラッシュデータが設定されていないLaravelコードベースで直接ロジックを見つけることはできません。
セッションのwrite
機能の直前にフラッシュデータを設定解除することは意味があります。このようにして、将来のリクエストではその設定を解除し、コードの終了時にのみ確実に実行されます。
Laravelがセッションのフラッシュメッセージをどのように処理するか教えてもらえますか?
ajaxリクエストやリダイレクトが行われるとどうなりますか? Laravelもフラッシュデータを古いものに移行するのか、それともそこにチェックが入っていますか?私はあなたがajax要求やリダイレクトのような何かがフラッシュデータが設定されていない場合、望ましくない動作を起こす可能性があると思います。 –
ajax呼び出しでは、フラッシュデータは_flash.oldに移動されます。 StartSessionミドルウェアでこれを見ることができます。次回のリクエストでフラッシュデータを保持したい場合は、 'reflash'メソッドを使用することができます –