diff --git a/CHANGELOG.md b/CHANGELOG.md index 23f072d5a8..5a02554ec5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * Added `Grav\Common\Page` interface to allow custom page types in the future 1. [](#bugfix) * Fixed bug in `ContentBlock` serialization + * Fixed `Route::withQueryParam()` to accept array values # v1.4.4 ## 04/12/2018 diff --git a/system/src/Grav/Framework/Route/Route.php b/system/src/Grav/Framework/Route/Route.php index 503d2a8ad5..63f6f7ec3c 100644 --- a/system/src/Grav/Framework/Route/Route.php +++ b/system/src/Grav/Framework/Route/Route.php @@ -178,7 +178,7 @@ public function getQueryParam($param) */ public function withGravParam($param, $value) { - return $this->withParam('gravParams', $param, $value); + return $this->withParam('gravParams', $param, null !== $value ? (string)$value : null); } /** @@ -222,17 +222,16 @@ public function __toString() protected function withParam($type, $param, $value) { $oldValue = isset($this->{$type}[$param]) ? $this->{$type}[$param] : null; - $newValue = null !== $value ? (string)$value : null; - if ($oldValue === $newValue) { + if ($oldValue === $value) { return $this; } $new = clone $this; - if ($newValue === null) { + if ($value === null) { unset($new->{$type}[$param]); } else { - $new->{$type}[$param] = $newValue; + $new->{$type}[$param] = $value; } return $new;