go-form/content/docs/rendering/_index.md
Simon Vieille 1751d55fe4
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
feat(rendering): add comments
2025-07-28 21:48:19 +02:00

1.5 KiB

linkTitle title weight
Rendering Rendering 6

go-form allows you to render a form using Go's built-in template engine. Here is a simple example that displays a form:

myForm := form.NewForm(...)

render := theme.NewRenderer(theme.Bootstrap5)

tpl, _ := template.New("page").Funcs(render.FuncMap()).Parse(`
    <html>
        <head>
            <title>My form</title>
        </head>
        <body>
            {{ form .Form }}
        </body>
    </html>
`)

b := new(strings.Builder)

tpl.Execute(w, map[string]any{
    "Form": myForm,
})

fmt.Println(b.String())

{{% goplay-auto-import-main %}}

@import "fmt"
@import "html/template"
@import "strings"
@import
@import "github.com/yosssi/gohtml"
@import "gitnet.fr/deblan/go-form/example"
@import "gitnet.fr/deblan/go-form/theme"

form := example.CreateDataForm()
render := theme.NewRenderer(theme.Html5)
// render := theme.NewRenderer(theme.Bootstrap5)

tpl, _ := template.New("page").Funcs(render.FuncMap()).Parse(`{{ form .Form }}`)

buff := new(strings.Builder)

tpl.Execute(buff, map[string]any{
    "Form": form,
})

fmt.Println(gohtml.Format(buff.String()))

{{% /goplay-auto-import-main %}}

Other helper functions are available to render specific parts of the form:

  • form_errors: displays the form's global errors
  • form_row : renders the label, errors, and widget of a field
  • form_label: renders only the label of a field
  • form_widget: renders only the widget of a field
  • form_widget_errors: renders only the errors of a specific field