Попытка объединить HSP и Acid-state вместе в форме с Happstack

Я прошел ускоренный курс Happstack, и теперь я пытаюсь соединить разные вещи:

В "Обработка формы с учетом типов с использованием реформы" ( http://happstack.com/docs/crashcourse/Reform.html) я закодировал эту форму регистрации:

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"

Теперь я хочу добавить зарегистрированного пользователя, когда форма будет успешной. Я закодировал эту базу пользователей с помощью кислотного состояния ( http://happstack.com/docs/crashcourse/AcidState.html)

insertUser :: MonadIO m => AcidState (EventState InsertUserIntern) -> User -> m (EventResult InsertUserIntern)  
insertUser acid user = do
  update' acid (InsertUserIntern user)

Фрагменты работают отдельно, но куда я могу вставить insertUser acid user в insertAndRenderUser?

Я надеюсь, что вы можете помочь мне
Спасибо
Фло

1 ответ

Получил это сам

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>
Другие вопросы по тегам