[BUGFIX] Minor bugfixes and optimisations

- Fixed getRoute sometimes not passing current loaded route.
- Fixed optional parameters in some occasions not working properly.
This commit is contained in:
Simon Sessingø
2016-01-14 16:37:36 +01:00
parent 1332ef7139
commit 14a030294e
3 changed files with 15 additions and 6 deletions
+4
View File
@@ -327,6 +327,10 @@ class RouterBase {
return $url; return $url;
} }
if($controller === null && $this->loadedRoute !== null) {
return $this->processUrl($this->loadedRoute, $this->loadedRoute->getMethod(), $parameters, $getParams);
}
$c = ''; $c = '';
$method = null; $method = null;
+5 -1
View File
@@ -278,7 +278,7 @@ abstract class RouterEntry {
if($lastCharacter === '?') { if($lastCharacter === '?') {
$parameter = substr($parameter, 0, strlen($parameter)-1); $parameter = substr($parameter, 0, strlen($parameter)-1);
$regex .= '\\/?(?P<'.$parameter.'>[^\/]*)\\/?'; $regex .= '\\/(?:(?P<'.$parameter.'>[^\/]*)\\/?)';
$required = false; $required = false;
} else { } else {
$regex .= '\\/(?P<' . $parameter . '>'. $parameterRegex .')\\/'; $regex .= '\\/(?P<' . $parameter . '>'. $parameterRegex .')\\/';
@@ -314,6 +314,10 @@ abstract class RouterEntry {
throw new RouterException('Missing required parameter ' . $name['name'], 404); throw new RouterException('Missing required parameter ' . $name['name'], 404);
} }
if(!$name['required'] && $parameterValue === null) {
continue;
}
$parameters[$name['name']] = $parameterValue; $parameters[$name['name']] = $parameterValue;
} }
} }
+6 -5
View File
@@ -2,6 +2,7 @@
namespace Pecee\SimpleRouter; namespace Pecee\SimpleRouter;
use Pecee\ArrayUtil;
use Pecee\Http\Request; use Pecee\Http\Request;
class RouterRoute extends RouterEntry { class RouterRoute extends RouterEntry {
@@ -40,11 +41,11 @@ class RouterRoute extends RouterEntry {
if($parameters !== null) { if($parameters !== null) {
if(is_array($this->parameters)) { //if(is_array($this->parameters)) {
$this->parameters = array_merge($this->parameters, $parameters); // $this->parameters = array_merge($this->parameters, $parameters);
} else { //} else {
$this->parameters = $parameters; $this->parameters = $parameters;
} //}
return true; return true;
} }
@@ -74,7 +75,7 @@ class RouterRoute extends RouterEntry {
if(count($parameters)) { if(count($parameters)) {
$tmp = array(); $tmp = array();
foreach($parameters as $param) { foreach($parameters as $param) {
$tmp[$param] = ''; $tmp[$param] = null;
} }
$this->parameters = $tmp; $this->parameters = $tmp;
} }