下記を使うと簡単にバリデーションチェックできるっぽい。
go-playground/validator
irisでコンタクトフォームつくってるのですが、フォームから会社名、氏名、メアド、内容を取得してます。Contactという構造体のタグにvalidate:"〜"という形でバリデーションルールを書くことで、ルールを追加できます。
irisはctx.PostValue()でフォームの送信内容を収得できるので、Contact構造体のインスタンス?に送信内容を入れて、validator.New().Struct(contact)とやることで、バリデーションチェックしてくれます。エラーなければnilを返します。
contact.go
import (
_"github.com/kataras/iris"
"github.com/kataras/iris/context"
"gopkg.in/go-playground/validator.v9"
)
type Contact struct {
Company string
Name string `validate:"required"`
Mail string `validate:"required,email"`
Content string `validate:"required"`
}
func contactPost(ctx context.Context) {
contact := &Contact{
Company: ctx.PostValue("company"),
Name: ctx.PostValue("name"),
Mail: ctx.PostValue("mail"),
Content: ctx.PostValue("content"),
}
v := validator.New()
err := v.Struct(contact)
if err != nil{
ctx.ViewData("inputErr", true)
ctx.ViewData("input", contact)
}else{
//send mail
}
setDefaultVars(ctx)
ctx.View("hoge/contact.html")
}
最初、構造体のフィールド名を小文字にしていたのですが、小文字だとどうもこのバリデーションライブラリが動きませんでした。