首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试用Happstack将HSP和Acid-state结合起来

尝试用Happstack将HSP和Acid-state结合起来
EN

Stack Overflow用户
提问于 2013-03-06 04:17:38
回答 1查看 107关注 0票数 0

我学习了Happstack速成课程,现在我正在尝试将不同的东西结合在一起:

从“使用改革进行类型安全的表单处理”(http://happstack.com/docs/crashcourse/Reform.html#reform)中,我编写了这个注册表单:

代码语言:javascript
复制
register :: AcidState UserBase -> ServerPart Response
register acid = unXMLGenT $
  appTemplate "register" () $
        reform (form "/register") "register" (insertAndRenderUser acid) Nothing registerForm

insertAndRenderUser :: (Monad m) => AcidState UserBase -> User -> AppT m XML
insertAndRenderUser acid user = 
    <dl>
      <dt>lastname:</dt>    <dd><% lastName user    %></dd>
      <dt>firstname:</dt>   <dd><% firstName user   %></dd>
      <dt>email:</dt> <dd><% email user %></dd>
      <dt>birthday:</dt> <dd><% show (birthday user) %></dd>
    </dl>


registerForm :: SimpleForm User
registerForm =
    User (UserId 0)
     <$> (errorList ++> label "Last name:"  ++>  (inputText "" `transformEither` required) <++ br)
     <*> (errorList ++> label "First name:" ++> (inputText "" `transformEither` required) <++ br)
     <*> (errorList ++> label "E-mail:"     ++> (inputText "" `transformEither` required) <++ br)
     <*> (errorList ++> label "Birthday:"   ++> (inputText "" `transformEither` requireDate) <++ br)
     <*  inputSubmit "Register"

现在,我想在表单成功时添加注册用户。我已经在acid-state (http://happstack.com/docs/crashcourse/AcidState.html#ixset)的帮助下编写了这个UserBase

代码语言:javascript
复制
insertUser :: MonadIO m => AcidState (EventState InsertUserIntern) -> User -> m (EventResult InsertUserIntern)  
insertUser acid user = do
  update' acid (InsertUserIntern user)

这些代码片段可以单独工作,但是我可以在insertAndRenderUser中的什么地方插入insertUser acid user

我希望你能帮助我

谢谢

浮点

EN

回答 1

Stack Overflow用户

发布于 2013-03-06 06:35:57

我自己买的

代码语言:javascript
复制
insertAndRenderUser acid user = do
  insertUser acid user 
  appTemplate "Your Registration" () $
    <dl>
      <dt>lastname:</dt>    <dd><% lastName user    %></dd>
      <dt>firstname:</dt>   <dd><% firstName user   %></dd>
      <dt>email:</dt> <dd><% email user %></dd>
      <dt>birthday:</dt> <dd><% show (birthday user) %></dd>
    </dl>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15233269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档