diff --git a/src/Pecee/SimpleRouter/Route/RouteController.php b/src/Pecee/SimpleRouter/Route/RouteController.php index 58c1a63..2347d2c 100644 --- a/src/Pecee/SimpleRouter/Route/RouteController.php +++ b/src/Pecee/SimpleRouter/Route/RouteController.php @@ -91,7 +91,7 @@ class RouteController extends LoadableRoute implements IControllerRoute /* Match global regular-expression for route */ $regexMatch = $this->matchRegex($request, $url); - if ($regexMatch === false || stripos($url, $this->url) !== 0 || strtolower($url) !== strtolower($this->url)) { + if ($regexMatch === false || (stripos($url, $this->url) !== 0 && strtolower($url) !== strtolower($this->url))) { return false; } diff --git a/src/Pecee/SimpleRouter/Route/RouteResource.php b/src/Pecee/SimpleRouter/Route/RouteResource.php index 9d7bdd4..050e998 100644 --- a/src/Pecee/SimpleRouter/Route/RouteResource.php +++ b/src/Pecee/SimpleRouter/Route/RouteResource.php @@ -84,7 +84,7 @@ class RouteResource extends LoadableRoute implements IControllerRoute /* Match global regular-expression for route */ $regexMatch = $this->matchRegex($request, $url); - if ($regexMatch === false) { + if ($regexMatch === false || (stripos($url, $this->url) !== 0 && strtolower($url) !== strtolower($this->url))) { return false; } diff --git a/test/Dummy/DummyController.php b/test/Dummy/DummyController.php index 34c0b8e..8e38c2d 100644 --- a/test/Dummy/DummyController.php +++ b/test/Dummy/DummyController.php @@ -17,4 +17,19 @@ class DummyController echo join(', ', func_get_args()); } + public function getTest() + { + echo 'getTest'; + } + + public function postTest() + { + echo 'postTest'; + } + + public function putTest() + { + echo 'putTest'; + } + } \ No newline at end of file diff --git a/test/RouterControllerTest.php b/test/RouterControllerTest.php new file mode 100644 index 0000000..3c39bc2 --- /dev/null +++ b/test/RouterControllerTest.php @@ -0,0 +1,42 @@ +assertEquals('getTest', $response); + + } + + public function testPost() + { + // Match normal route on alias + TestRouter::controller('/url', 'DummyController'); + + $response = TestRouter::debugOutput('/url/test', 'post'); + + $this->assertEquals('postTest', $response); + + } + + public function testPut() + { + // Match normal route on alias + TestRouter::controller('/url', 'DummyController'); + + $response = TestRouter::debugOutput('/url/test', 'put'); + + $this->assertEquals('putTest', $response); + + } + +} \ No newline at end of file diff --git a/test/RouterUrlTest.php b/test/RouterUrlTest.php index 8d872ce..34816fe 100644 --- a/test/RouterUrlTest.php +++ b/test/RouterUrlTest.php @@ -8,6 +8,19 @@ require_once 'Helpers/TestRouter.php'; class RouterUrlTest extends PHPUnit_Framework_TestCase { + public function testSimularUrls() + { + // Match normal route on alias + TestRouter::resource('/url11', 'DummyController@method1'); + TestRouter::resource('/url1', 'DummyController@method1', ['as' => 'match']); + + TestRouter::debugNoReset('/url1', 'get'); + + $this->assertEquals(TestRouter::getUrl('match'), TestRouter::getUrl()); + + TestRouter::router()->reset(); + } + public function testUrls() { // Match normal route on alias