Попытка объединить 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>