mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-07-11 21:12:14 +00:00
Merge pull request #521 from skipperbent/v4-fix-group-domain
[BUGFIX] Fixed group not matching domain with no parameters (issue: #468)
This commit is contained in:
@@ -26,12 +26,15 @@ class RouteGroup extends Route implements IGroupRoute
|
|||||||
|
|
||||||
foreach ($this->domains as $domain) {
|
foreach ($this->domains as $domain) {
|
||||||
|
|
||||||
|
// If domain has no parameters but matches
|
||||||
|
if ($domain === $request->getHost()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
$parameters = $this->parseParameters($domain, $request->getHost(), '.*');
|
$parameters = $this->parseParameters($domain, $request->getHost(), '.*');
|
||||||
|
|
||||||
if ($parameters !== null && \count($parameters) !== 0) {
|
if ($parameters !== null && \count($parameters) !== 0) {
|
||||||
|
|
||||||
$this->parameters = $parameters;
|
$this->parameters = $parameters;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,7 +59,7 @@ class RouteGroup extends Route implements IGroupRoute
|
|||||||
|
|
||||||
$prefix = $this->prefix;
|
$prefix = $this->prefix;
|
||||||
|
|
||||||
foreach($this->getParameters() as $parameter => $value) {
|
foreach ($this->getParameters() as $parameter => $value) {
|
||||||
$prefix = str_ireplace('{' . $parameter . '}', $value, $prefix);
|
$prefix = str_ireplace('{' . $parameter . '}', $value, $prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,6 +107,42 @@ class RouterRouteTest extends \PHPUnit\Framework\TestCase
|
|||||||
$this->assertEquals('it, system', $response);
|
$this->assertEquals('it, system', $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFixedDomain()
|
||||||
|
{
|
||||||
|
$result = false;
|
||||||
|
TestRouter::request()->setHost('admin.world.com');
|
||||||
|
|
||||||
|
TestRouter::group(['domain' => 'admin.world.com'], function () use (&$result) {
|
||||||
|
TestRouter::get('/test', function ($subdomain = null) use (&$result) {
|
||||||
|
$result = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
TestRouter::debug('/test', 'get');
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFixedNotAllowedDomain()
|
||||||
|
{
|
||||||
|
$result = false;
|
||||||
|
TestRouter::request()->setHost('other.world.com');
|
||||||
|
|
||||||
|
TestRouter::group(['domain' => 'admin.world.com'], function () use (&$result) {
|
||||||
|
TestRouter::get('/', function ($subdomain = null) use (&$result) {
|
||||||
|
$result = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
TestRouter::debug('/', 'get');
|
||||||
|
} catch(\Exception $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->assertFalse($result);
|
||||||
|
}
|
||||||
|
|
||||||
public function testDomainAllowedRoute()
|
public function testDomainAllowedRoute()
|
||||||
{
|
{
|
||||||
$result = false;
|
$result = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user