我有一个带有由控制器动态生成的任意数量输入的表单的视图。提交表单时,每个输入都应创建自己的记录,因此,如果有 60 个输入,则应创建 60 条记录。
应如何验证每个输入/字段?在 IHP 文档的示例中,单个表单仅创建 1 条记录,因此我不确定执行此操作的最佳或惯用方法是什么。
也许我可以将如下所示的函数映射到每个提交的输入,但是 Left 情况将由第一个验证失败而不是所有验证失败触发,因此我需要在重定向到前一个之前将每个失败保存在列表中(?)表单视图。
action CreatePostAction = do
let post = newRecord @Post
post
|> fill @'["title", "body"]
|> validateField #title nonEmpty
|> validateField #body nonEmpty
|> ifValid \case
Left post -> render NewView { post }
Right post -> do
post <- post |> createRecord
setSuccessMessage "Post created"
redirectTo PostsAction
Run Code Online (Sandbox Code Playgroud)