Form

Content-Type Requested: application/x-www-form-urlencoded

Bind

package main

import "github.com/kataras/iris/v12"

func main() {
	app := iris.New()
	app.RegisterView(iris.HTML("./templates", ".html"))

	app.Get("/", showForm)
	app.Post("/", handleForm)

	app.Listen(":8080")
}

func showForm(ctx iris.Context) {
	ctx.View("form.html")
}

type formExample struct {
	Colors []string `form:"colors[]"` // or just "colors".
}

func handleForm(ctx iris.Context) {
	var form formExample
	err := ctx.ReadForm(&form)
	if err != nil {
		ctx.StopWithError(iris.StatusBadRequest, err)
		return
	}

	ctx.JSON(iris.Map{"Colors": form.Colors})
}

templates/form.html

<form action="/" method="POST">
    <p>Check one or more colors</p>

    <label for="red">Red</label>
    <!-- name can be "colors" too -->
    <input type="checkbox" name="colors[]" value="red" id="red">
    <label for="green">Green</label>
    <input type="checkbox" name="colors[]" value="green" id="green">
    <label for="blue">Blue</label>
    <input type="checkbox" name="colors[]" value="blue" id="blue">
    <input type="submit">
</form>

Result

{
  "Colors": [
    "red",
    "green",
    "blue"
  ]
}

Last updated