LoginSignup
0
2

More than 5 years have passed since last update.

Go – validationチェック

Posted at

下記を使うと簡単にバリデーションチェックできるっぽい。
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")
}

最初、構造体のフィールド名を小文字にしていたのですが、小文字だとどうもこのバリデーションライブラリが動きませんでした。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2