Laravelアプリはお手軽にscale outしないので注意が必要
Laravel で Form を利用して、エラーだった場合にそれをどう返すかのサンプルコードは 4.2 でも 5.6 でも以下のように
- Validation - Laravel - The PHP Framework For Web Artisans
- Validation - Laravel - The PHP Framework For Web Artisans
redirect で返すようになっている。
そして Form を組み立てる View 側では Input::old() を使うとよいということになっている。さっき入力していたデータを復元してあげないと不親切だからだ。
しかしこの組み合わせはクセモノ。
何が起きるかというと Session データに Form の Input すべてを載せることになるので、実質 Session Driver に Cookie は利用できない1。つまり、アプリケーションサーバだけでカジュアルに scale out することはできないということになる。
Session Driver はすべてバックエンドのストレージ前提になり、DBMS や memcached, Redis などが必要になる2。これらの準備が簡単なよくできた PaaS を使っているならよいが、そうでないならインフラの知識も必要になってしまうので、注意しておいた方がよさそうだ。
しかし、この Form の error を redirect で返す方法って Laravel のこのコードで初めて見たんだけど、こういう設計って推奨されるんですかねえ…?