mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-17 00:37:52 +00:00
[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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user