cgyy
cgyy
你好,是这样的 比如我要自定义form的验证方法,可以这样写: ``` go func (form *MyForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { /// } ``` 也可以这样写 ``` go func (form MyForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { /// }...
``` go // 商品型号 type VariantForm struct { OptionValues []int Price float32 `binding:"Required"` Sku string } // 验证选项值需要全部大于0 func (form *VariantForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { if len(errs) >...
好的,代码是这样的: ``` go type VariantsController struct { *macaron.Context } func MapVariants(ctx *macaron.Context) { ctx.Map(&VariantsController{ctx}) } m.Group("/variants", func() { m.Get("/:id/edit", (*VariantsController).Edit) m.Put("/:id", binding.Bind(VariantForm{}), (*VariantsController).Update) }, MapVariants) ```
似乎是Bind 方法里面没有判断指针类型的原因 binding.go 104行 ``` go func Bind(obj interface{}, ifacePtr ...interface{}) macaron.Handler { return func(ctx *macaron.Context) { bind(ctx, obj, ifacePtr...) if handler, ok := obj.(ErrorHandler); ok { ctx.Invoke(handler.Error) } else...