From 72d826d76db6d598e07547d1632a450f8d2728ab Mon Sep 17 00:00:00 2001 From: iwyg Date: Sun, 21 Feb 2016 17:56:16 +0100 Subject: [PATCH] add option for specifying pattern as prefix --- src/Loader/PhpLoader.php | 5 ++++- tests/Loader/Fixures/route_groups.2.php | 21 +++++++++++++++++++++ tests/Loader/PhpLoaderTest.php | 6 ++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/Loader/Fixures/route_groups.2.php diff --git a/src/Loader/PhpLoader.php b/src/Loader/PhpLoader.php index d89cf3e..482b544 100644 --- a/src/Loader/PhpLoader.php +++ b/src/Loader/PhpLoader.php @@ -84,8 +84,11 @@ private function addRoutes(array $routes) foreach ($routes as $name => $route) { if ((bool)$gkeys = $this->getGroupKeys($route)) { $req = isset($route['requirements']) ? $route['requirements'] : []; + if (null === $prefix = isset($route['pattern']) ? $route['pattern'] : $name) { + continue; + } foreach ($gkeys as $i) { - $this->loadGroup($name, $req, $route[$i]); + $this->loadGroup($prefix, $req, $route[$i]); } continue; } diff --git a/tests/Loader/Fixures/route_groups.2.php b/tests/Loader/Fixures/route_groups.2.php new file mode 100644 index 0000000..85ab6d2 --- /dev/null +++ b/tests/Loader/Fixures/route_groups.2.php @@ -0,0 +1,21 @@ + [ + 'pattern' => '/', + 'method' => 'GET', + 'handler' => 'indexAction' + ], + 'backstage' => [ + 'pattern' => '/admin/area', + [ + 'users' => [ + 'pattern' => '/user/{id}', + 'method' => 'GET', + 'handler' => 'userAction' + ] + ] + ] +]; diff --git a/tests/Loader/PhpLoaderTest.php b/tests/Loader/PhpLoaderTest.php index 8ea20b8..1ecef36 100644 --- a/tests/Loader/PhpLoaderTest.php +++ b/tests/Loader/PhpLoaderTest.php @@ -53,6 +53,12 @@ public function itShouldLoadGroups() $this->assertNull($routes->get('users')->getHost()); $this->assertSame(['http', 'https'], $routes->get('users')->getSchemes()); + + $loader = new PhpLoader($this->mockLocator()); + $routes = $loader->loadRoutes('route_groups.2.php'); + + $this->assertNull($routes->get('users')->getHost()); + $this->assertSame(['http', 'https'], $routes->get('users')->getSchemes()); } /** @test */