Fixed Grav parameter handling in RouteFactory::createFromString()

This commit is contained in:
Matias Griese
2019-09-26 14:47:45 +03:00
parent 39837d0826
commit 3d999501a0
2 changed files with 26 additions and 4 deletions

View File

@@ -6,6 +6,7 @@
* Improved Flex FolderStorage class to better hide storage specific logic
1. [](#bugfix)
* Fixed error when activating Flex Accounts in GRAV system configuration (PHP 7.1)
* Fixed Grav parameter handling in `RouteFactory::createFromString()`
# v1.7.0-beta.8
## 09/19/2019

View File

@@ -43,8 +43,8 @@ class RouteFactory
'grav' => [
'root' => self::$root,
'language' => self::$language,
'route' => $path,
'params' => ''
'route' => static::trimParams($path),
'params' => static::getParams($path)
],
];
return new Route($parts);
@@ -132,6 +132,26 @@ class RouteFactory
return $params !== '' ? static::parseParams($params) : [];
}
public static function trimParams($str)
{
if ($str === '') {
return $str;
}
$delimiter = self::$delimiter;
/** @var array $params */
$params = explode('/', $str);
$list = [];
foreach ($params as $param) {
if (mb_strpos($param, $delimiter) === false) {
$list[] = $param;
}
}
return implode('/', $list);
}
/**
* @param string $str
* @return array
@@ -146,16 +166,17 @@ class RouteFactory
/** @var array $params */
$params = explode('/', $str);
$list = [];
foreach ($params as &$param) {
/** @var array $parts */
$parts = explode($delimiter, $param, 2);
if (isset($parts[1])) {
$var = rawurldecode($parts[0]);
$val = rawurldecode($parts[1]);
$param = [$var => $val];
$list[$var] = $val;
}
}
return $params;
return $list;
}
}