我正在尝试学习Yesod 1.2,我无法弄清楚如何访问存储在YesodAuth实例中的IO和信息。
例如,我无法弄清楚如何在Yesod 1.2中调用getCurrentTime。在Yesod 1.1中,您可以通过调用“aformM(liftIO getCurrentTime)”获取表单中的当前时间
同样,使用Yesod 1.2我无法弄清楚如何调用“requireAuthId”。
使用Yesod 1.1,您可以获得这两位数据,其中两行代码以< *>开头。此代码段中的aformM:
commentForm :: EntryId -> Form Comment
commentForm entryId = renderDivs $ Comment
<$> pure entryId
<*> aformM (liftIO getCurrentTime)
<*> aformM requireAuthId
<*> areq textField (fieldSettingsLabel MsgCommentName) Nothing
<*> areq textareaField (fieldSettingsLabel MsgCommentText) Nothing
我目前在调用“commentForm”的代码中使用查询这些,但这看起来很愚蠢,因为现在我必须多次获取时间和用户ID。
commentForm :: UTCTime -> UserId -> EntryId -> Form Comment
commentForm theTime userId entryId = renderDivs $ Comment
<$> pure entryId
<*> pure theTime
<*> pure userId
<*> areq textField (fieldSettingsLabel MsgCommentName) Nothing
<*> areq textareaField (fieldSettingsLabel MsgCommentText) Nothing
帮助!我已经多次浏览过这些文档而且我无法绕过它。
答案 0 :(得分:4)
有趣的是,我在几个小时之前更新了博客示例,以包含这种正确的方式,并解释为什么有必要。简短版本:
lift (liftIO getCurrentTime)