diff --git a/src/Pecee/SimpleRouter/Router.php b/src/Pecee/SimpleRouter/Router.php index 05676c9..f7d0516 100644 --- a/src/Pecee/SimpleRouter/Router.php +++ b/src/Pecee/SimpleRouter/Router.php @@ -262,8 +262,8 @@ class Router /** * Load routes - * @throws NotFoundHttpException * @return void + * @throws NotFoundHttpException */ public function loadRoutes(): void { @@ -350,7 +350,7 @@ class Router { $this->debug('Routing request'); - $methodNotAllowed = false; + $methodNotAllowed = null; try { $url = $this->request->getRewriteUrl() ?? $this->request->getUrl()->getPath(); @@ -370,7 +370,12 @@ class Router /* Check if request method matches */ if (\count($route->getRequestMethods()) !== 0 && \in_array($this->request->getMethod(), $route->getRequestMethods(), true) === false) { $this->debug('Method "%s" not allowed', $this->request->getMethod()); - $methodNotAllowed = true; + + // Only set method not allowed is not already set + if ($methodNotAllowed === null) { + $methodNotAllowed = true; + } + continue; } @@ -475,9 +480,9 @@ class Router /** * @param \Exception $e - * @throws HttpException - * @throws \Exception * @return string|null + * @throws \Exception + * @throws HttpException */ protected function handleException(\Exception $e): ?string { diff --git a/tests/Pecee/SimpleRouter/RouterRouteTest.php b/tests/Pecee/SimpleRouter/RouterRouteTest.php index e92bd37..28a7b4e 100644 --- a/tests/Pecee/SimpleRouter/RouterRouteTest.php +++ b/tests/Pecee/SimpleRouter/RouterRouteTest.php @@ -210,4 +210,15 @@ class RouterRouteTest extends \PHPUnit\Framework\TestCase $this->assertTrue(true); } + public function testSameRoutes() + { + TestRouter::get('/recipe', 'DummyController@method1')->name('add'); + TestRouter::post('/recipe', 'DummyController@method2')->name('edit'); + + TestRouter::debugNoReset('/recipe', 'post'); + TestRouter::debug('/recipe', 'get'); + + $this->assertTrue(true); + } + } \ No newline at end of file