Skip to content

Commit 6805a79

Browse files
committed
Merge pull request #38 from skipperbent/development
Development
2 parents 5a398f0 + 5393aa3 commit 6805a79

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/Pecee/SimpleRouter/RouterRoute.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,12 @@ public function matchRoute(Request $request) {
6060

6161
$isParameter = true;
6262
} elseif($isParameter && $character === '}') {
63+
$required = false;
6364
// Check for optional parameter
6465
if($lastCharacter === '?') {
6566
$parameter = substr($parameter, 0, strlen($parameter)-1);
6667
$regex .= '(?:(?:\/{0,1}(?P<'.$parameter.'>[a-z0-9]*?)){0,1}\\/)';
68+
$required = true;
6769
} else {
6870
// Use custom parameter regex if it exists
6971
$parameterRegex = '[a-z0-9]*?';
@@ -74,7 +76,7 @@ public function matchRoute(Request $request) {
7476

7577
$regex .= '(?:\\/{0,1}(?P<' . $parameter . '>'. $parameterRegex .')\\/)';
7678
}
77-
$parameterNames[] = $parameter;
79+
$parameterNames[] = array('value' => $parameter, 'required' => $required);
7880
$parameter = '';
7981
$isParameter = false;
8082

@@ -97,7 +99,13 @@ public function matchRoute(Request $request) {
9799

98100
if(count($parameterNames)) {
99101
foreach($parameterNames as $name) {
100-
$parameters[$name] = isset($parameterValues[$name]) ? $parameterValues[$name] : null;
102+
$parameterValue = (isset($parameterValues[$name['value']]) && !empty($parameterValues[$name['value']])) ? $parameterValues[$name['value']] : null;
103+
104+
if($name['required'] && $parameterValue === null) {
105+
throw new RouterException('Missing required parameter ' . $name['name'], 404);
106+
}
107+
108+
$parameters[$name] = $parameterValue;
101109
}
102110
}
103111

0 commit comments

Comments
 (0)