mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-17 08:47:52 +00:00
[FEATURE] Added support for parameters in group prefix.
This commit is contained in:
@@ -7,6 +7,7 @@ use Pecee\SimpleRouter\Handlers\IExceptionHandler;
|
|||||||
|
|
||||||
class RouteGroup extends Route implements IGroupRoute
|
class RouteGroup extends Route implements IGroupRoute
|
||||||
{
|
{
|
||||||
|
protected $urlRegex = '/^%s\/?/u';
|
||||||
protected $prefix;
|
protected $prefix;
|
||||||
protected $name;
|
protected $name;
|
||||||
protected $domains = [];
|
protected $domains = [];
|
||||||
@@ -55,16 +56,19 @@ class RouteGroup extends Route implements IGroupRoute
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse parameter
|
// Parse group prefix parameters
|
||||||
|
if(count($this->originalParameters) === 0) {
|
||||||
|
$this->parseParameters($this->prefix, $url);
|
||||||
|
}
|
||||||
|
|
||||||
$prefix = $this->prefix;
|
$parsedPrefix = $this->prefix;
|
||||||
|
|
||||||
foreach ($this->getParameters() as $parameter => $value) {
|
foreach ($this->getParameters() as $parameter => $value) {
|
||||||
$prefix = str_ireplace('{' . $parameter . '}', $value, $prefix);
|
$parsedPrefix = str_ireplace('{' . $parameter . '}', $value, $parsedPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Skip if prefix doesn't match */
|
/* Skip if prefix doesn't match */
|
||||||
if ($this->prefix !== null && stripos($url, $prefix) === false) {
|
if ($this->prefix !== null && stripos($url, $parsedPrefix) === false) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,7 @@ use Pecee\Http\Request;
|
|||||||
|
|
||||||
class RoutePartialGroup extends RouteGroup implements IPartialGroupRoute
|
class RoutePartialGroup extends RouteGroup implements IPartialGroupRoute
|
||||||
{
|
{
|
||||||
|
protected $urlRegex = '/^%s\/?/u';
|
||||||
/**
|
|
||||||
* RoutePartialGroup constructor.
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->urlRegex = '/^%s\/?/u';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method called to check if route matches
|
* Method called to check if route matches
|
||||||
|
|||||||
@@ -271,4 +271,41 @@ class RouterUrlTest extends \PHPUnit\Framework\TestCase
|
|||||||
TestRouter::router()->reset();
|
TestRouter::router()->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGroupPrefix() {
|
||||||
|
|
||||||
|
$result = false;
|
||||||
|
|
||||||
|
TestRouter::group(['prefix' => '/lang/{lang}'], function () use(&$result) {
|
||||||
|
|
||||||
|
TestRouter::get('/test', function() use(&$result) {
|
||||||
|
$result = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
TestRouter::debug('/lang/da/test');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
|
||||||
|
// Test group prefix sub-route
|
||||||
|
|
||||||
|
$result = null;
|
||||||
|
$expectedResult = 28;
|
||||||
|
|
||||||
|
TestRouter::group(['prefix' => '/lang/{lang}'], function () use(&$result, $expectedResult) {
|
||||||
|
|
||||||
|
TestRouter::get('/horse/{horseType}', function($horseType) use(&$result) {
|
||||||
|
$result = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
TestRouter::get('/user/{userId}', function($userId) use(&$result, $expectedResult) {
|
||||||
|
$result = $userId;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
TestRouter::debug("/lang/da/user/$expectedResult");
|
||||||
|
|
||||||
|
$this->assertEquals($expectedResult, $result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user