3

我对Yesod有下一个问题。我想在我的 HTML 上制作自己的表单,因为我想要自己的标签和标签,但问题是如果我的表单是使用下一个代码自动生成的,我该怎么做:

entryForm :: Form Post
entryForm = renderDivs $ Post
    <$> areq   textField "name" Nothing
    <*> areq   textField "text" Nothing
    <*> areq   timeField "hour" Nothing

我的处理程序是:

getPostNewR :: Handler RepHtml
getPostNewR = do
    (postWidget, enctype) <- generateFormPost entryForm
    defaultLayout $ do
        $(widgetFile "post_new")

我的 post_new.hamlet 文件是这样的:

<form method=post enctype=#{enctype}>
^{postWidget}
<div>
    <input type=submit value="Create Post">

我希望我的表单以这种方式显示:

<form method="post" id="form_new_post" action="/post/new_do">
    <h4>Name:</h4>
    <div class="form-group">
        <textarea name="name" id="post_name" class="form-control" autofocus="autofocus"></textarea>
    </div>
    <h4>Text:</h4>
    <div class="form-group">
        <textarea name="text" id="post_text" class="form-control"></textarea>
    </div>
    <input type=submit value="Create Post">
</form>

但这需要一个带有标记的标签,如下所示:

<input type="hidden" name="_token" value="ETjYBzdwQ1">

我如何生成此令牌值或如何更改我的 entryForm 来做到这一点?

感谢您的宝贵时间,非常感谢您的帮助

4

1 回答 1

4

您可以使用getRequest获取YesodRequest,然后使用 reqToken获取令牌本身,例如fmap reqToken getRequest

于 2014-09-03T23:15:51.827 回答