diff --git a/src/Mvc/Router/AbstractRouter.php b/src/Mvc/Router/AbstractRouter.php index 212dc1a..8c107d7 100644 --- a/src/Mvc/Router/AbstractRouter.php +++ b/src/Mvc/Router/AbstractRouter.php @@ -71,13 +71,21 @@ public function route(string $name, Request $request) $found = false; for($i = 0; $i < count($parts); $i++) { if($parts[$i] === $name && isset($parts[$i+1])) { - $request->setAction($parts[$i+1]); + $action = $parts[$i+1]; + if(strpos($action, "?")) { + $action = strstr($action, "?"); + } + + $request->setAction($action); $found = true; } } if(!$found) { $request->setAction("index"); } - return $this->getRoute($name); + $controller = $this->getRoute($name); + $request->setController($controller->getControllerSimpleName()); + + return $controller; } } \ No newline at end of file diff --git a/tests/router-test/RoutingTest.php b/tests/router-test/RoutingTest.php index f749cb5..5cde4bf 100644 --- a/tests/router-test/RoutingTest.php +++ b/tests/router-test/RoutingTest.php @@ -34,6 +34,18 @@ public function testRouting() $this->assertEquals(0, count($request->getParams())); $this->assertEquals('/routingTest/routed', $request->getOrigin()); $this->assertContains("flex'd", $response->getBody()); + } + + public function testRoutingInclQueryString() + { + $request = Request::parse("/routingTest/routed?id=25"e=ent"); + $response = Application::getInstance()->serve('default', array(), $request, false); + + $this->assertEquals('Routed', $request->getController()); + $this->assertEquals('index', $request->getAction()); + $this->assertEquals(2, count($request->getParams())); + $this->assertEquals('/routingTest/routed?id=25"e=ent', $request->getOrigin()); + $this->assertContains("flex'd", $response->getBody()); } } \ No newline at end of file