diff --git a/src/router.php b/src/router.php index 860a7ae..f792267 100644 --- a/src/router.php +++ b/src/router.php @@ -110,6 +110,7 @@ private function addRoute($method, $parameters) { $robj = []; $route = $this->getPrefix($parameters[0]); $robj['method'] = $method; + $robj['route'] = $route; $robj['id'] = str_replace('=', '', base64_encode($method.$route)); $robj['callback'] = $parameters[count($parameters) -1]; @@ -173,6 +174,13 @@ private function getRoute($route_id) { } } + private function getRouteWithMethod($_route, $method) { + foreach($this->routes as $route) { + if($route['method'] == $method && $route['route'] == $_route['route']) + return $route; + } + } + private function getUrlParameters($params, $query_vars) { $pars = []; foreach($params as $param){ @@ -276,12 +284,15 @@ public function rewrite_url( $wp_rewrite ) { } public function parse_request($wp_query) { - if (isset($wp_query->query_vars['amp_route'])){ $route = $this->getRoute($wp_query->query_vars['amp_route']); + $_route = $this->getRouteWithMethod($route, $_SERVER['REQUEST_METHOD']); + if($route['id'] == $wp_query->query_vars['amp_route'] && $route['method'] == $_SERVER['REQUEST_METHOD']){ $this->getCallback($route, $wp_query->query_vars); + } else if($_route['method'] == $_SERVER['REQUEST_METHOD']) { + $this->getCallback($_route, $wp_query->query_vars); } else { Ampersand::getInstance()->response()->setStatus(404); Ampersand::getInstance()->response()->template('404');