从Monadic表单获取FieldView或从表单中分离与视图相关的代码

时间:2013-07-28 03:08:40

标签: haskell yesod

我跟随Yesod Web框架书(http://www.yesodweb.com/book-1.2/forms Monadic Forms部分)中的Monadic Form示例。该示例显示了如何构造窗口小部件并从窗体中返回它。但是,我想避免样式并在我的处理程序/表单中查看相关代码,我想我可以得到所有的FieldView,但我无法弄清楚如何做到这一点因为runFormPost返回一个xml(猜测是Widget) )。

修改了他们的代码书

personForm :: Html -> MForm Handler (FormResult Person, FieldView, FieldView)
personForm extra = do
    (nameRes, nameView) <- mreq textField "this is not used" Nothing
    (ageRes, ageView)   <- mreq intField  "neither is this" Nothing
    let personRes = Person <$> nameRes <*> ageRes
    return (personRes, nameView, ageView) -- my change and removed all the View related code

在我的处理程序中,我称之为:

 ((res, v1, v2), enctype) <- runFormPost personForm

这里有几个问题。 (1)我收到一条错误消息,表明FieldView采用了另一个参数并且不确定它是什么我放()似乎满足编译器但是我不知道为什么这有任何意义。 (2)然后我收到错误消息: Couldn't match expected type (FormResult a0, xml0)' with actual type(FormResult Person, FieldView (), FieldView ())'

第二个我认为它与runFormPost返回的内容有关。

有人可以帮我找到直接获取FieldViews的最佳方法,这样我就可以将它们放在我的Hamlet文件中吗?或者,如果有更好的方法将处理程序/表单中的视图相关项目分开,那也可以。

我不想使用输入表单,因为如果输入无效,似乎无法捕获它并处理代码中的错误 - 它只是指向错误页面。

谢谢!

0 个答案:

没有答案