📚
1つのページで複数フォームを設置したい
最近業務で、一つのページに複数のフォームを設置する実装を行った。
Jetstreamでいうこんな感じで1ページに複数のフォームがあると言うものである。
確かに、メールアドレスの変更だけで別のページに毎回遷移しては、UXも悪いしわざわざ分ける必要はないであろう。
Livewireをもし使っているのであれば、コンポーネント単位で実装することはできるのでわざあわざ別でルーティングもリクエストクラスも作成する必要がないのだが、今回はLivewireを使用していないプロジェクトだったので、どの様にするか悩む。
ルーティングはどうするか
これについては、フォームの数によってルーティングが増えてしまうのだが、/setting/update/name
でPOSTしたら処理すると言う流れで問題ないだろう。
エラーメッセージをどう返すか
ControllerでValidatorを作成しているなら、validateWithBagメソッド
を使用して、リクエストをバリデーションした結果のエラーメッセージをnamederrorbag内へ保存できるのだが、Requestクラスでは、どの様に指定するのかが分からなかった。
Requestクラスでの指定方法についてしばらく調べたところ、以下の方法が紹介されており、Requestクラス内でerrorBag
を定義してあげることで、namederrorbagに保存する事ができた。
Discussion