最近少しずつ寒いのがすこしずつましになり、大阪城の梅の写真を撮りに行ったり、花粉が~って話を聞くようになって春が来たなーとじわじわ感じて来ましたね。
梅が終わっても桜とかネモフィラとか、植物系の写真撮るならもってこいの時期でワクワクしてます。
laravelのセッションで割と詰まった話を…
session-()>flash()はセッションの一時保存で、リクエスト後に消えるセッションを作るよ!みたいな記事が多かったので
漠然とリクエストが1回送られた時に消えてるんだろな。くらいに思っていたのですが、
このメソッドを使用してセッションに保存されたデータは、即時および後続のHTTPリクエスト中に利用可能です。後続のHTTPリクエストの後、一時保存したデータを削除します。
https://readouble.com/laravel/9.x/ja/session.html#flash-data
とあるように2回リクエストで削除というようになっているそうです。
リクエスト1回で削除を行うのはsession()->now()で出来ました。
表示系で結構便利そうではあるのですが、説明されているページが少ない気がします。
初心者の雑な予想ですが、リクエスト1回で消えるならパラメータで良くない?となってしまうのかなと
じゃあnow()はいつ使うのって感じですが、パラメータではなくセッションに入れて処理をした方がいい場合、例えばパラメータが未定義で処理が走る可能性がある時です。今回の自分が全く同じ状態に陥りました。
laravelにはblade上で変数の前に「@」を付けて変数を書く(例:@$spam)ことで未定義のエラーを無視して無理やり走らせることのできるようにできます。
これはちょっとな…ということでセッションを使用することで、セッションを取得した時に存在しない場合はnullが返されるので無理矢理感もなく、きれいなコードに見える…かもしれないです。
終わりに
リクエストいつしてんの?とかの確認になって良い調べものだったと思います。
redirect()はgetリクエストでview()はファイルを直接呼び出すのでリクエストではないとか普段意識することがなかったのでかなり驚きました。
こういうlaravelの序盤の序盤みたいなところでつまずくので調べるのが多々足りんなと改めて感じました。