code: func HTTPMethodOverride(c *Controller, fc []Filter) {
  	// An array of HTTP verbs allowed.
  	verbs := []string{"POST", "PUT", "PATCH", "DELETE"}
  
  	method := strings.ToUpper(c.Request.Method)
  
  	if method == "POST" {
  		param := ""
  		if f, err := c.Request.GetForm(); err == nil {
  			param = strings.ToUpper(f.Get("_method"))
  		}
  
  		if len(param) > 0 {
  			override := false
  			// Check if param is allowed
  			for _, verb := range verbs {
  				if verb == param {
  					override = true
  					break
  				}
  			}
  
  			if override {
  				c.Request.Method = param
  			} else {
  				c.Response.Status = 405
  				c.Result = c.RenderError(&Error{
  					Title:       "Method not allowed",
  					Description: "Method " + param + " is not allowed (valid: " + strings.Join(verbs, ", ") + ")",
  				})
  				return
  			}
  
  		}
  	}
  
  	fc[0](c, fc[1:]) // Execute the next filter stage.
  }
docs: // HTTPMethodOverride overrides allowed http methods via form or browser param