フォーム
機能
HTML表示する
DBを反映する
リクエストを反映する
DOM の操作
リクエストの内容をキャストする
リクエストの内容をバリデーションする
(フォームデータをDBに代入する)
貸出処理 GET
DBからデータ取得
データをフォームに反映
ステータスによってフィールドを出し分ける
フォームを表示
料金計算 htmx POST
リクエストをキャスト
リクエストをモデルに代入
モデルで計算
リクエスト、計算結果、ステータスによってフィールドを出し分け
フォームを表示
貸出処理 POST
リクエストをキャスト
リクエストをバリデーション
モデルに代入
モデルで計算
リクエスト、計算結果、ステータスによってフィールドを出し分け
フォームを表示
データ構造
フォームUI:フォームを表示するのに必要なデータ構造
フォームリクエスト:フォームの入力内容を格納するデータ構造
フォームフィールド:フィールド単位で、リクエストからフォームリクエストに変換したり、データを UI に変換したり、バリデーションを行う。変換クラス
フォーム:フォームフィールドの集合である、変換クラス
貸出処理 GET
DBデータをフォームUIに代入
ステータスなどによって、フォームUIのフィールドを出し分けて表示
料金計算 htmx POST
リクエストをフォームリクエストに変換
フォームリクエストから料金などを計算
計算結果をDBデータに代入
リクエスト、計算結果、ステータスによってフォームUIを作って表示
貸出処理 POST
リクエストをフォームリクエストに変換
フォームリクエストをバリデーション
フォームリクエストでゴニョゴニョ
リクエスト、計算結果、ステータスによってフォームUIを作って表示
バリデーションのことも考えて、連携取れるようにしたい……
ページごとにHTMLを書くのは嫌だなぁ
ビックバン変更はしたくない
予約作成の明細フォームだけ新フォームにするとか?
表示を分離する
フォームUIに差し替える
フォームリクエストに差し替える