小编ste*_*ict的帖子

如何验证创建多条记录的表单

语境

我有一个带有由控制器动态生成的任意数量输入的表单的视图。提交表单时,每个输入都应创建自己的记录,因此,如果有 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)

haskell ihp

2
推荐指数
1
解决办法
151
查看次数

标签 统计

haskell ×1

ihp ×1