×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
久しぶりのLaravel話です。
Laravelではエラーメッセージの表示などで馴染み深いflashセッションの機能がありますが
この機能は「次回のリクエストまでセッションを維持する」という言葉の通り動作します。
もし次回のリクエストでflashセッションを引き続き維持したい時は、
遷移やアクセスの可能性を十分に理解・整理したうえで、
Input::flash();
や
$request->session()->reflash();
をうまく使いましょう。
繰り返しますが、この言葉の通りなので使う時はちゃんとわかって使う事が大事だったりします。
.envのdebug=falseで本番デプロイするまで上記の罠 - 2が表面化しない!!!
debug=trueの時に導入される便利ツールたちは便利ではありますが
こういう思いがけない事例もあるのだと感心しました。
flash自体は良い仕組みですので使いこなしていきたいところですが、
ちゃんとケースバイケースで用途を考えて実装する必要がありますね。
エラーハンドラ内で404であればreflashするとか、
APIのミドルウェアで特定の条件でのみreflashするとか、
安直に思いつく手はあれど、十分にケースを網羅した上で正解を決めていきたいところです。
この調査のためにまたソースをたくさん読んだので、良い勉強になりました。
Laravelではエラーメッセージの表示などで馴染み深いflashセッションの機能がありますが
この機能は「次回のリクエストまでセッションを維持する」という言葉の通り動作します。
もし次回のリクエストでflashセッションを引き続き維持したい時は、
遷移やアクセスの可能性を十分に理解・整理したうえで、
Input::flash();
や
$request->session()->reflash();
をうまく使いましょう。
繰り返しますが、この言葉の通りなので使う時はちゃんとわかって使う事が大事だったりします。
はまりがちな罠 - 1
APIなどの非同期通信で消えてしまう。はまりがちな罠 - 2
public以下に設置したcss, js, imgの404アクセス(laravelのハンドラで処理)で消えてしまう。そんなことがあるのか的な罠(これが言いたかった)
barryvdh/laravel-debugbar を噛ませている場合、エラーハンドリング時は暗黙にreflashされるので.envのdebug=falseで本番デプロイするまで上記の罠 - 2が表面化しない!!!
debug=trueの時に導入される便利ツールたちは便利ではありますが
こういう思いがけない事例もあるのだと感心しました。
flash自体は良い仕組みですので使いこなしていきたいところですが、
ちゃんとケースバイケースで用途を考えて実装する必要がありますね。
エラーハンドラ内で404であればreflashするとか、
APIのミドルウェアで特定の条件でのみreflashするとか、
安直に思いつく手はあれど、十分にケースを網羅した上で正解を決めていきたいところです。
この調査のためにまたソースをたくさん読んだので、良い勉強になりました。
PR
この記事にコメントする
カレンダー
最新記事
(05/29)
(04/24)
(04/24)
(02/07)
(07/26)