mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-23 19:49:15 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4d45e34541 | |||
| a9e7a33ff8 | |||
| 6805a79d50 | |||
| 5393aa3200 | |||
| f2ffd83376 | |||
| 5a398f03a6 | |||
| 866832faa6 | |||
| c4bff83ac4 | |||
| 5ca8294015 |
@@ -60,10 +60,12 @@ class RouterRoute extends RouterEntry {
|
||||
|
||||
$isParameter = true;
|
||||
} elseif($isParameter && $character === '}') {
|
||||
$required = false;
|
||||
// Check for optional parameter
|
||||
if($lastCharacter === '?') {
|
||||
$parameter = substr($parameter, 0, strlen($parameter)-1);
|
||||
$regex .= '(?:(?:\/(?P<'.$parameter.'>[a-z0-9]*?)){0,1}\\/)';
|
||||
$regex .= '(?:(?:\/{0,1}(?P<'.$parameter.'>[a-z0-9]*?)){0,1}\\/)';
|
||||
$required = true;
|
||||
} else {
|
||||
// Use custom parameter regex if it exists
|
||||
$parameterRegex = '[a-z0-9]*?';
|
||||
@@ -72,9 +74,9 @@ class RouterRoute extends RouterEntry {
|
||||
$parameterRegex = $this->parametersRegex[$parameter];
|
||||
}
|
||||
|
||||
$regex .= '(?:\\/(?P<' . $parameter . '>'. $parameterRegex .')\\/)';
|
||||
$regex .= '(?:\\/{0,1}(?P<' . $parameter . '>'. $parameterRegex .')\\/)';
|
||||
}
|
||||
$parameterNames[] = $parameter;
|
||||
$parameterNames[] = array('name' => $parameter, 'required' => $required);
|
||||
$parameter = '';
|
||||
$isParameter = false;
|
||||
|
||||
@@ -97,7 +99,13 @@ class RouterRoute extends RouterEntry {
|
||||
|
||||
if(count($parameterNames)) {
|
||||
foreach($parameterNames as $name) {
|
||||
$parameters[$name] = isset($parameterValues[$name]) ? $parameterValues[$name] : null;
|
||||
$parameterValue = (isset($parameterValues[$name['name']]) && !empty($parameterValues[$name['name']])) ? $parameterValues[$name['name']] : null;
|
||||
|
||||
if($name['required'] && $parameterValue === null) {
|
||||
throw new RouterException('Missing required parameter ' . $name['name'], 404);
|
||||
}
|
||||
|
||||
$parameters[$name['name']] = $parameterValue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user