diff --git a/src/Pecee/SimpleRouter/RouterBase.php b/src/Pecee/SimpleRouter/RouterBase.php index 4246757..90af6dc 100644 --- a/src/Pecee/SimpleRouter/RouterBase.php +++ b/src/Pecee/SimpleRouter/RouterBase.php @@ -327,6 +327,10 @@ class RouterBase { return $url; } + if($controller === null && $this->loadedRoute !== null) { + return $this->processUrl($this->loadedRoute, $this->loadedRoute->getMethod(), $parameters, $getParams); + } + $c = ''; $method = null; diff --git a/src/Pecee/SimpleRouter/RouterEntry.php b/src/Pecee/SimpleRouter/RouterEntry.php index 435324b..5ed231a 100644 --- a/src/Pecee/SimpleRouter/RouterEntry.php +++ b/src/Pecee/SimpleRouter/RouterEntry.php @@ -278,7 +278,7 @@ abstract class RouterEntry { if($lastCharacter === '?') { $parameter = substr($parameter, 0, strlen($parameter)-1); - $regex .= '\\/?(?P<'.$parameter.'>[^\/]*)\\/?'; + $regex .= '\\/(?:(?P<'.$parameter.'>[^\/]*)\\/?)'; $required = false; } else { $regex .= '\\/(?P<' . $parameter . '>'. $parameterRegex .')\\/'; @@ -314,6 +314,10 @@ abstract class RouterEntry { throw new RouterException('Missing required parameter ' . $name['name'], 404); } + if(!$name['required'] && $parameterValue === null) { + continue; + } + $parameters[$name['name']] = $parameterValue; } } diff --git a/src/Pecee/SimpleRouter/RouterRoute.php b/src/Pecee/SimpleRouter/RouterRoute.php index ec30640..3321728 100644 --- a/src/Pecee/SimpleRouter/RouterRoute.php +++ b/src/Pecee/SimpleRouter/RouterRoute.php @@ -2,6 +2,7 @@ namespace Pecee\SimpleRouter; +use Pecee\ArrayUtil; use Pecee\Http\Request; class RouterRoute extends RouterEntry { @@ -40,11 +41,11 @@ class RouterRoute extends RouterEntry { if($parameters !== null) { - if(is_array($this->parameters)) { - $this->parameters = array_merge($this->parameters, $parameters); - } else { + //if(is_array($this->parameters)) { + // $this->parameters = array_merge($this->parameters, $parameters); + //} else { $this->parameters = $parameters; - } + //} return true; } @@ -74,7 +75,7 @@ class RouterRoute extends RouterEntry { if(count($parameters)) { $tmp = array(); foreach($parameters as $param) { - $tmp[$param] = ''; + $tmp[$param] = null; } $this->parameters = $tmp; }