diff --git a/yesod-form/Yesod/Form/Input.hs b/yesod-form/Yesod/Form/Input.hs index adf2c982..461bf37f 100644 --- a/yesod-form/Yesod/Form/Input.hs +++ b/yesod-form/Yesod/Form/Input.hs @@ -67,10 +67,20 @@ toMap = Map.unionsWith (++) . map (\(x, y) -> Map.singleton x [y]) runInputPost :: MonadHandler m => FormInput m a -> m (FormResult a) runInputPost (FormInput f) = do + (env, fenv) <- liftM (toMap *** toMap) runRequestBody + m <- getYesod + l <- languages + emx <- f m l env fenv + case emx of + Left errs -> invalidArgs $ errs [] + Right x -> return x + +runInputPostResult :: MonadHandler m => FormInput m a -> m (FormResult a) +runInputPostResult (FormInput f) = do (env, fenv) <- liftM (toMap *** toMap) runRequestBody m <- getYesod l <- languages emx <- f m l env fenv case emx of Left errs -> return $ FormFailure (errs []) - Right x -> return (FormSuccess x) + Right x -> return $ FormSuccess x