--- linkTitle: Form title: Form weight: 3 --- ## Example ### Prerequisites ```golang import ( "gitnet.fr/deblan/go-form/form" "gitnet.fr/deblan/go-form/validation" ) type Person struct { Name string Age int } ``` ### Creating a form ```golang myForm := form.NewForm( form.NewFieldText("Name"). WithConstraints( validation.NewNotBlank(), ), form.NewFieldNumber("Age"). WithConstraints( validation.NewNotBlank(), validation.NewRange().WithMin(18), ), ).End() ``` ### Validating a struct ```golang data := Person{} myForm.Mount(data) myForm.IsValid() // false data = Person{ Name: "Alice", Age: 42, } myForm.Mount(data) myForm.IsValid() // true ``` ### Validating a request ```golang import ( "net/http" ) myForm.WithMethod(http.MethodPost) // req *http.Request if req.Method == myForm.Method { myForm.HandleRequest(req) if myForm.IsSubmitted() && myForm.IsValid() { myForm.Bind(&data) } } ``` ## Struct ```golang type Form struct { Fields []*Field GlobalFields []*Field Errors []validation.Error Method string Action string Name string Options []*Option RequestData *url.Values } ``` ## Methods ### NewForm ```golang func NewForm(fields ...*Field) *Form ``` Generates a new form with default properties ### Add ```golang func (f *Form) Add(fields ...*Field) ``` Appends children ### AddGlobalField ```golang func (f *Form) AddGlobalField(field *Field) ``` Configures its children deeply ### Bind ```golang func (f *Form) Bind(data any) error ``` Copies datas from the form to a struct ### End ```golang func (f *Form) End() *Form ``` Configures its children deeply This function must be called after adding all fields ### GetField ```golang func (f *Form) GetField(name string) *Field ``` Returns a child using its name ### GetOption ```golang func (f *Form) GetOption(name string) *Option ``` Returns an option using its name ### HandleRequest ```golang func (f *Form) HandleRequest(req *http.Request) ``` Processes a request ### HasField ```golang func (f *Form) HasField(name string) bool ``` Checks if the form contains a child using its name ### HasOption ```golang func (f *Form) HasOption(name string) bool ``` Checks if the form contains an option using its name ### IsSubmitted ```golang func (f *Form) IsSubmitted() bool ``` Checks if the form is submitted ### IsValid ```golang func (f *Form) IsValid() bool ``` Checks the a form is valid ### Mount ```golang func (f *Form) Mount(data any) error ``` Copies datas from a struct to the form ### ResetErrors ```golang func (f *Form) ResetErrors() *Form ``` Resets the form errors ### WithAction ```golang func (f *Form) WithAction(v string) *Form ``` Sets the action of the form (eg: "/") ### WithMethod ```golang func (f *Form) WithMethod(v string) *Form ``` Sets the method of the format (http.MethodPost, http.MethodGet, ...) ### WithName ```golang func (f *Form) WithName(v string) *Form ``` Sets the name of the form (used to compute name of fields) ### WithOptions ```golang func (f *Form) WithOptions(options ...*Option) *Form ``` Appends options to the form #### Options | Name | Type | Description | | ---- | ---- | ---- | | `attr` | `map[string]string` | List of extra attributes | | `help` | `string` | Helper |