【问题标题】:How generate a token widget on Yesod?如何在 Yesod 上生成令牌小部件?
【发布时间】:2014-09-03 14:21:51
【问题描述】:

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 来做到这一点?

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

【问题讨论】:

    标签: yesod csrf-protection hamlet yesod-forms


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2021-06-24
      • 2020-10-17
      • 2019-10-01
      相关资源
      最近更新 更多