📚

1つのページで複数フォームを設置したい

2021/06/16に公開

最近業務で、一つのページに複数のフォームを設置する実装を行った。

Jetstreamでいうこんな感じで1ページに複数のフォームがあると言うものである。
確かに、メールアドレスの変更だけで別のページに毎回遷移しては、UXも悪いしわざわざ分ける必要はないであろう。

Livewireをもし使っているのであれば、コンポーネント単位で実装することはできるのでわざあわざ別でルーティングもリクエストクラスも作成する必要がないのだが、今回はLivewireを使用していないプロジェクトだったので、どの様にするか悩む。

ルーティングはどうするか

これについては、フォームの数によってルーティングが増えてしまうのだが、/setting/update/name でPOSTしたら処理すると言う流れで問題ないだろう。

エラーメッセージをどう返すか

ControllerでValidatorを作成しているなら、validateWithBagメソッドを使用して、リクエストをバリデーションした結果のエラーメッセージをnamederrorbag内へ保存できるのだが、Requestクラスでは、どの様に指定するのかが分からなかった。

Requestクラスでの指定方法についてしばらく調べたところ、以下の方法が紹介されており、Requestクラス内でerrorBagを定義してあげることで、namederrorbagに保存する事ができた。

Discussion