Commit 0e1a0049 authored by astaxie's avatar astaxie

Merge pull request #971 from athurg/get_request_params_with_default

Support default value for controller’s params get
parents 0c933643 d2c5daa5
...@@ -363,67 +363,144 @@ func (c *Controller) ParseForm(obj interface{}) error { ...@@ -363,67 +363,144 @@ func (c *Controller) ParseForm(obj interface{}) error {
return ParseForm(c.Input(), obj) return ParseForm(c.Input(), obj)
} }
// GetString returns the input value by key string. // GetString returns the input value by key string or the default value while it's present and input is blank
func (c *Controller) GetString(key string) string { func (c *Controller) GetString(key string, def ...string) string {
return c.Ctx.Input.Query(key) var defv string
if len(def) > 0 {
defv = def[0]
}
if v := c.Ctx.Input.Query(key); v != "" {
return v
} else {
return defv
}
} }
// GetStrings returns the input string slice by key string. // GetStrings returns the input string slice by key string or the default value while it's present and input is blank
// it's designed for multi-value input field such as checkbox(input[type=checkbox]), multi-selection. // it's designed for multi-value input field such as checkbox(input[type=checkbox]), multi-selection.
func (c *Controller) GetStrings(key string) []string { func (c *Controller) GetStrings(key string, def ...[]string) []string {
var defv []string
if len(def) > 0 {
defv = def[0]
}
f := c.Input() f := c.Input()
if f == nil { if f == nil {
return []string{} return defv
} }
vs := f[key] vs := f[key]
if len(vs) > 0 { if len(vs) > 0 {
return vs return vs
} else {
return defv
} }
return []string{}
} }
// GetInt returns input as an int // GetInt returns input as an int or the default value while it's present and input is blank
func (c *Controller) GetInt(key string) (int, error) { func (c *Controller) GetInt(key string, def ...int) (int, error) {
return strconv.Atoi(c.Ctx.Input.Query(key)) var defv int
if len(def) > 0 {
defv = def[0]
}
if strv := c.Ctx.Input.Query(key); strv != "" {
return strconv.Atoi(strv)
} else {
return defv, nil
}
} }
// GetInt8 return input as an int8 // GetInt8 return input as an int8 or the default value while it's present and input is blank
func (c *Controller) GetInt8(key string) (int8, error) { func (c *Controller) GetInt8(key string, def ...int8) (int8, error) {
i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 8) var defv int8
i8 := int8(i64) if len(def) > 0 {
defv = def[0]
}
return i8, err if strv := c.Ctx.Input.Query(key); strv != "" {
i64, err := strconv.ParseInt(strv, 10, 8)
i8 := int8(i64)
return i8, err
} else {
return defv, nil
}
} }
// GetInt16 returns input as an int16 // GetInt16 returns input as an int16 or the default value while it's present and input is blank
func (c *Controller) GetInt16(key string) (int16, error) { func (c *Controller) GetInt16(key string, def ...int16) (int16, error) {
i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 16) var defv int16
i16 := int16(i64) if len(def) > 0 {
defv = def[0]
}
if strv := c.Ctx.Input.Query(key); strv != "" {
i64, err := strconv.ParseInt(strv, 10, 16)
i16 := int16(i64)
return i16, err return i16, err
} else {
return defv, nil
}
} }
// GetInt32 returns input as an int32 // GetInt32 returns input as an int32 or the default value while it's present and input is blank
func (c *Controller) GetInt32(key string) (int32, error) { func (c *Controller) GetInt32(key string, def ...int32) (int32, error) {
i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 32) var defv int32
i32 := int32(i64) if len(def) > 0 {
defv = def[0]
}
return i32, err if strv := c.Ctx.Input.Query(key); strv != "" {
i64, err := strconv.ParseInt(c.Ctx.Input.Query(key), 10, 32)
i32 := int32(i64)
return i32, err
} else {
return defv, nil
}
} }
// GetInt64 returns input value as int64. // GetInt64 returns input value as int64 or the default value while it's present and input is blank.
func (c *Controller) GetInt64(key string) (int64, error) { func (c *Controller) GetInt64(key string, def ...int64) (int64, error) {
return strconv.ParseInt(c.Ctx.Input.Query(key), 10, 64) var defv int64
if len(def) > 0 {
defv = def[0]
}
if strv := c.Ctx.Input.Query(key); strv != "" {
return strconv.ParseInt(strv, 10, 64)
} else {
return defv, nil
}
} }
// GetBool returns input value as bool. // GetBool returns input value as bool or the default value while it's present and input is blank.
func (c *Controller) GetBool(key string) (bool, error) { func (c *Controller) GetBool(key string, def ...bool) (bool, error) {
return strconv.ParseBool(c.Ctx.Input.Query(key)) var defv bool
if len(def) > 0 {
defv = def[0]
}
if strv := c.Ctx.Input.Query(key); strv != "" {
return strconv.ParseBool(strv)
} else {
return defv, nil
}
} }
// GetFloat returns input value as float64. // GetFloat returns input value as float64 or the default value while it's present and input is blank.
func (c *Controller) GetFloat(key string) (float64, error) { func (c *Controller) GetFloat(key string, def ...float64) (float64, error) {
return strconv.ParseFloat(c.Ctx.Input.Query(key), 64) var defv float64
if len(def) > 0 {
defv = def[0]
}
if strv := c.Ctx.Input.Query(key); strv != "" {
return strconv.ParseFloat(c.Ctx.Input.Query(key), 64)
} else {
return defv, nil
}
} }
// GetFile returns the file data in file upload field named as key. // GetFile returns the file data in file upload field named as key.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment