From f2ffd8337671d4977870c51aa31f56164e1542c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sun, 22 Nov 2015 19:39:11 +0100 Subject: [PATCH 1/2] [TASK] If parameter is empty set RouterRoute not set the value to null. --- src/Pecee/SimpleRouter/RouterRoute.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Pecee/SimpleRouter/RouterRoute.php b/src/Pecee/SimpleRouter/RouterRoute.php index cf541e5..ca682ac 100644 --- a/src/Pecee/SimpleRouter/RouterRoute.php +++ b/src/Pecee/SimpleRouter/RouterRoute.php @@ -97,7 +97,7 @@ class RouterRoute extends RouterEntry { if(count($parameterNames)) { foreach($parameterNames as $name) { - $parameters[$name] = isset($parameterValues[$name]) ? $parameterValues[$name] : null; + $parameters[$name] = (isset($parameterValues[$name]) && !empty($parameterValues[$name])) ? $parameterValues[$name] : null; } } From 5393aa32002a9f32d81d7fc77571197b54dd82bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sessing=C3=B8?= Date: Sun, 22 Nov 2015 19:44:09 +0100 Subject: [PATCH 2/2] [TASK] RouterRoute now throws exception is required parameter is not filled. --- src/Pecee/SimpleRouter/RouterRoute.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Pecee/SimpleRouter/RouterRoute.php b/src/Pecee/SimpleRouter/RouterRoute.php index ca682ac..44d1acb 100644 --- a/src/Pecee/SimpleRouter/RouterRoute.php +++ b/src/Pecee/SimpleRouter/RouterRoute.php @@ -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 .= '(?:(?:\/{0,1}(?P<'.$parameter.'>[a-z0-9]*?)){0,1}\\/)'; + $required = true; } else { // Use custom parameter regex if it exists $parameterRegex = '[a-z0-9]*?'; @@ -74,7 +76,7 @@ class RouterRoute extends RouterEntry { $regex .= '(?:\\/{0,1}(?P<' . $parameter . '>'. $parameterRegex .')\\/)'; } - $parameterNames[] = $parameter; + $parameterNames[] = array('value' => $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]) && !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; } }