mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-07-11 21:02:15 +00:00
[TASK] RouterRoute now throws exception is required parameter is not
filled.
This commit is contained in:
@@ -60,10 +60,12 @@ class RouterRoute extends RouterEntry {
|
|||||||
|
|
||||||
$isParameter = true;
|
$isParameter = true;
|
||||||
} elseif($isParameter && $character === '}') {
|
} elseif($isParameter && $character === '}') {
|
||||||
|
$required = false;
|
||||||
// Check for optional parameter
|
// Check for optional parameter
|
||||||
if($lastCharacter === '?') {
|
if($lastCharacter === '?') {
|
||||||
$parameter = substr($parameter, 0, strlen($parameter)-1);
|
$parameter = substr($parameter, 0, strlen($parameter)-1);
|
||||||
$regex .= '(?:(?:\/{0,1}(?P<'.$parameter.'>[a-z0-9]*?)){0,1}\\/)';
|
$regex .= '(?:(?:\/{0,1}(?P<'.$parameter.'>[a-z0-9]*?)){0,1}\\/)';
|
||||||
|
$required = true;
|
||||||
} else {
|
} else {
|
||||||
// Use custom parameter regex if it exists
|
// Use custom parameter regex if it exists
|
||||||
$parameterRegex = '[a-z0-9]*?';
|
$parameterRegex = '[a-z0-9]*?';
|
||||||
@@ -74,7 +76,7 @@ class RouterRoute extends RouterEntry {
|
|||||||
|
|
||||||
$regex .= '(?:\\/{0,1}(?P<' . $parameter . '>'. $parameterRegex .')\\/)';
|
$regex .= '(?:\\/{0,1}(?P<' . $parameter . '>'. $parameterRegex .')\\/)';
|
||||||
}
|
}
|
||||||
$parameterNames[] = $parameter;
|
$parameterNames[] = array('value' => $parameter, 'required' => $required);
|
||||||
$parameter = '';
|
$parameter = '';
|
||||||
$isParameter = false;
|
$isParameter = false;
|
||||||
|
|
||||||
@@ -97,7 +99,13 @@ class RouterRoute extends RouterEntry {
|
|||||||
|
|
||||||
if(count($parameterNames)) {
|
if(count($parameterNames)) {
|
||||||
foreach($parameterNames as $name) {
|
foreach($parameterNames as $name) {
|
||||||
$parameters[$name] = (isset($parameterValues[$name]) && !empty($parameterValues[$name])) ? $parameterValues[$name] : null;
|
$parameterValue = (isset($parameterValues[$name['value']]) && !empty($parameterValues[$name['value']])) ? $parameterValues[$name['value']] : null;
|
||||||
|
|
||||||
|
if($name['required'] && $parameterValue === null) {
|
||||||
|
throw new RouterException('Missing required parameter ' . $name['name'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
$parameters[$name] = $parameterValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user