如何在Yesod中创建动态大小的字段?

时间:2017-10-21 10:36:26

标签: haskell yesod

我找到了一种方法可以将多个intField(例如)组合成类似于Field m [Int]的内容 功能签名是:

multiplyField :: Monad m => (RenderMessage (HandlerSite m) FormMessage, Show a)
              => Field m a -> Field m [a]

当然,这可以正常工作(除了那些多选的东西)

解析器以可接受的方式工作。 但是fieldView非常糟糕:

fieldView = \theId name attrs vals isReq -> do
                    let views = map (\val -> view1 theId name attrs val isReq) $ sequenceA vals
                    [whamlet|$forall view <- views
                               ^{view}
                            |]

问题是几个字段的整个错误只折叠成一个val(Left Text [a]

如果用户总是引入正确的数据,此解决方案可以正常工作,但如果出现错误,则所有字段都会消失但只有一个。

我不明白为什么解析器支持n个值[Text],但视图号为

如何获得[Left Text a]而不是Left Text [a]

0 个答案:

没有答案