diff --git a/router.go b/router.go index 0d51410b..7194bd29 100644 --- a/router.go +++ b/router.go @@ -648,7 +648,21 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request) } if !findrouter { - if t, ok := p.routers[r.Method]; ok { + http_method := "" + + if r.Method == "POST" && context.Input.Query("_method") == "PUT" { + http_method = "PUT" + } + + if r.Method == "POST" && context.Input.Query("_method") == "DELETE" { + http_method = "DELETE" + } + + if http_method != "PUT" && http_method != "DELETE" { + http_method = r.Method + } + + if t, ok := p.routers[http_method]; ok { runObject, p := t.Match(urlPath) if r, ok := runObject.(*controllerInfo); ok { routerInfo = r