Development

- Only add $_GET param is every other parameter is null when calling getUrl.
This commit is contained in:
Simon Sessingø
2016-11-21 08:29:26 +01:00
parent 2cc97c120f
commit f1a9a50ee5
3 changed files with 10 additions and 6 deletions
+2 -2
View File
@@ -290,10 +290,10 @@ use Pecee\SimpleRouter\SimpleRouter;
*
* @param string|null $name
* @param string|array|null $parameters
* @param array $getParams
* @param array|null $getParams
* @return string
*/
function url($name = null, $parameters = null, array $getParams = array()) {
function url($name = null, $parameters = null, $getParams = null) {
SimpleRouter::getUrl($name, $parameters, $getParams);
}
+7 -3
View File
@@ -384,14 +384,17 @@ class Router
* @param array|null $getParams
* @return string
*/
public function getUrl($name = null, $parameters = null, $getParams = [])
public function getUrl($name = null, $parameters = null, $getParams = null)
{
if ($getParams !== null && is_array($getParams) === false) {
throw new \InvalidArgumentException('Invalid type for getParams. Must be array or null');
}
if ($getParams === null) {
/* Only merge $_GET when all parameters are null */
if ($name === null && $parameters === null && $getParams === null) {
$getParams = $_GET;
} else {
$getParams = (array)$getParams;
}
/* Return current route if no options has been specified */
@@ -435,7 +438,8 @@ class Router
}
/* No result so we assume that someone is using a hardcoded url and join everything together. */
return '/' . trim(join('/', array_merge((array)$name, (array)$parameters)), '/') . $this->arrayToParams($getParams);
$url = trim(join('/', array_merge((array)$name, (array)$parameters)), '/');
return (($url === '') ? '/' : '/' . $url . '/') . $this->arrayToParams($getParams);
}
/**
+1 -1
View File
@@ -311,7 +311,7 @@ class SimpleRouter
* @param array|null $getParams
* @return string
*/
public static function getUrl($name = null, $parameters = null, $getParams = [])
public static function getUrl($name = null, $parameters = null, $getParams = null)
{
return static::router()->getUrl($name, $parameters, $getParams);
}