mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-13 09:13:17 +03:00
Parameters are now correctly passed on to sub-routes
This commit is contained in:
10
README.md
10
README.md
@@ -655,6 +655,16 @@ SimpleRouter::group(['prefix' => '/admin'], function () {
|
||||
});
|
||||
```
|
||||
|
||||
You can also use parameters in your groups:
|
||||
|
||||
```php
|
||||
SimpleRouter::group(['prefix' => '/lang/{language}'], function ($language) {
|
||||
SimpleRouter::get('/users', function () {
|
||||
// Matches The "/admin/users" URL
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
## Partial groups
|
||||
|
||||
Partial router groups has the same benefits as a normal group, but supports parameters and are only rendered once the url has matched.
|
||||
|
||||
@@ -154,16 +154,21 @@ abstract class Route implements IRoute
|
||||
|
||||
$groupParameters = $this->getGroup() !== null ? $this->getGroup()->getParameters() : [];
|
||||
|
||||
$lastParams = [];
|
||||
|
||||
/* Only take matched parameters with name */
|
||||
foreach ((array)$parameters[1] as $name) {
|
||||
|
||||
// Ignore parent parameters
|
||||
if(isset($groupParameters[$name]) === true) {
|
||||
$lastParams[$name] = $matches[$name];
|
||||
continue;
|
||||
}
|
||||
|
||||
$values[$name] = (isset($matches[$name]) === true && $matches[$name] !== '') ? $matches[$name] : null;
|
||||
}
|
||||
|
||||
$values = array_merge($values, $lastParams);
|
||||
}
|
||||
|
||||
$this->originalParameters = $values;
|
||||
|
||||
@@ -308,4 +308,22 @@ class RouterUrlTest extends \PHPUnit\Framework\TestCase
|
||||
|
||||
}
|
||||
|
||||
public function testPassParameter() {
|
||||
|
||||
$result = false;
|
||||
$expectedLanguage = 'da';
|
||||
|
||||
TestRouter::group(['prefix' => '/lang/{lang}'], function () use(&$result, $expectedLanguage) {
|
||||
|
||||
TestRouter::get('/test', function($language) use(&$result, $expectedLanguage) {
|
||||
$result = $expectedLanguage;
|
||||
});
|
||||
});
|
||||
|
||||
TestRouter::debug("/lang/$expectedLanguage/test");
|
||||
|
||||
$this->assertEquals($expectedLanguage, $result);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user