Yesod.Form
Contents
Description
Parse forms (and query strings).
- data GForm s m xml a
- data FormResult a
- = FormMissing
- | FormFailure [String]
- | FormSuccess a
- data Enctype
- = UrlEncoded
- | Multipart
- data FormFieldSettings = FormFieldSettings {}
- newtype Textarea = Textarea {
- unTextarea :: String
- data FieldInfo sub y = FieldInfo {}
- formFailures :: FormResult a -> Maybe [String]
- type Form sub y = GForm sub y (GWidget sub y ())
- type Formlet sub y a = Maybe a -> Form sub y a
- type FormField sub y = GForm sub y [FieldInfo sub y]
- type FormletField sub y a = Maybe a -> FormField sub y a
- type FormInput sub y = GForm sub y [GWidget sub y ()]
- generateForm :: GForm s m xml a -> GHandler s m (xml, Enctype, Html)
- runFormGet :: GForm s m xml a -> GHandler s m (FormResult a, xml, Enctype)
- runFormMonadGet :: GFormMonad s m a -> GHandler s m (a, Enctype)
- runFormPost :: GForm s m xml a -> GHandler s m (FormResult a, xml, Enctype, Html)
- runFormPostNoNonce :: GForm s m xml a -> GHandler s m (FormResult a, xml, Enctype)
- runFormMonadPost :: GFormMonad s m a -> GHandler s m (a, Enctype)
- runFormGet' :: GForm sub y xml a -> GHandler sub y a
- runFormPost' :: GForm sub y xml a -> GHandler sub y a
- runFormTable :: Route m -> String -> FormField s m a -> GHandler s m (FormResult a, GWidget s m ())
- runFormDivs :: Route m -> String -> FormField s m a -> GHandler s m (FormResult a, GWidget s m ())
- fieldsToTable :: FormField sub y a -> Form sub y a
- fieldsToDivs :: FormField sub y a -> Form sub y a
- fieldsToPlain :: FormField sub y a -> Form sub y a
- checkForm :: (a -> FormResult b) -> GForm s m x a -> GForm s m x b
- module Yesod.Form.Class
- mkToForm :: PersistEntity v => v -> Q [Dec]
- module Yesod.Form.Fields
Data types
A generic form, allowing you to specifying the subsite datatype, master site datatype, a datatype for the form XML and the return type.
data FormResult a Source
A form can produce three different results: there was no data available, the data was invalid, or there was a successful parse.
The Applicative
instance will concatenate the failure messages in two
FormResult
s.
Constructors
FormMissing | |
FormFailure [String] | |
FormSuccess a |
Instances
Functor FormResult | |
Applicative FormResult | |
Show a => Show (FormResult a) | |
Monoid m => Monoid (FormResult m) |
The encoding type required by a form. The Show
instance produces values
that can be inserted directly into HTML.
Constructors
UrlEncoded | |
Multipart |
A newtype wrapper around a String
that converts newlines to HTML
br-tags.
Constructors
Textarea | |
Fields
|
Instances
Using this as the intermediate XML representation for fields allows us to
write generic field functions and then different functions for producing
actual HTML. See, for example, fieldsToTable
and fieldsToPlain
.
Constructors
FieldInfo | |
Instances
FormResult ~ formResult => IsForm (GFormMonad s m (formResult a, FieldInfo s m)) |
Utilities
formFailures :: FormResult a -> Maybe [String]Source
Type synonyms
type FormletField sub y a = Maybe a -> FormField sub y aSource
Unwrapping functions
generateForm :: GForm s m xml a -> GHandler s m (xml, Enctype, Html)Source
Generate a form, feeding it no data. The third element in the result tuple is a nonce hidden field.
runFormGet :: GForm s m xml a -> GHandler s m (FormResult a, xml, Enctype)Source
Run a form against GET parameters.
runFormMonadGet :: GFormMonad s m a -> GHandler s m (a, Enctype)Source
runFormPost :: GForm s m xml a -> GHandler s m (FormResult a, xml, Enctype, Html)Source
Run a form against POST parameters.
This function includes CSRF protection by checking a nonce value. You must therefore embed this nonce in the form as a hidden field; that is the meaning of the fourth element in the tuple.
runFormPostNoNonce :: GForm s m xml a -> GHandler s m (FormResult a, xml, Enctype)Source
Run a form against POST parameters, without CSRF protection.
runFormMonadPost :: GFormMonad s m a -> GHandler s m (a, Enctype)Source
Run a form against POST parameters. Please note that this does not provide CSRF protection.
runFormGet' :: GForm sub y xml a -> GHandler sub y aSource
Run a form against GET parameters, disregarding the resulting HTML and returning an error response on invalid input.
runFormPost' :: GForm sub y xml a -> GHandler sub y aSource
Run a form against POST parameters, disregarding the resulting HTML and returning an error response on invalid input. Note: this does not perform CSRF protection.
High-level form post unwrappers
runFormTable :: Route m -> String -> FormField s m a -> GHandler s m (FormResult a, GWidget s m ())Source
Create a table-styled form.
This function wraps around runFormPost
and fieldsToTable
, taking care of
some of the boiler-plate in creating forms. In particular, is automatically
creates the form element, sets the method, action and enctype attributes,
adds the CSRF-protection nonce hidden field and inserts a submit button.
runFormDivs :: Route m -> String -> FormField s m a -> GHandler s m (FormResult a, GWidget s m ())Source
Same as runFormPostTable
, but uses fieldsToDivs
for styling.
Field/form helpers
fieldsToTable :: FormField sub y a -> Form sub y aSource
Display the label, tooltip, input code and errors in a single row of a table.
fieldsToDivs :: FormField sub y a -> Form sub y aSource
Display the label, tooltip, input code and errors in a single div.
fieldsToPlain :: FormField sub y a -> Form sub y aSource
Display only the actual input widget code, without any decoration.
checkForm :: (a -> FormResult b) -> GForm s m x a -> GForm s m x bSource
Add a validation check to a form.
Note that if there is a validation error, this message will not
automatically appear on the form; for that, you need to use checkField
.
Type classes
module Yesod.Form.Class
Template Haskell
mkToForm :: PersistEntity v => v -> Q [Dec]Source
module Yesod.Form.Fields