mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-09 16:12:49 +08:00
改进URl生成对ext参数的支持
This commit is contained in:
@@ -305,7 +305,8 @@ class Route
|
|||||||
$vars = self::parseVar($rule);
|
$vars = self::parseVar($rule);
|
||||||
if (isset($name)) {
|
if (isset($name)) {
|
||||||
$key = $group ? $group . ($rule ? '/' . $rule : '') : $rule;
|
$key = $group ? $group . ($rule ? '/' . $rule : '') : $rule;
|
||||||
self::name($name, [$key, $vars, self::$domain]);
|
$suffix = isset($option['ext']) ? $option['ext'] : null;
|
||||||
|
self::name($name, [$key, $vars, self::$domain, $suffix]);
|
||||||
}
|
}
|
||||||
if ($group) {
|
if ($group) {
|
||||||
if ('*' != $type) {
|
if ('*' != $type) {
|
||||||
@@ -447,7 +448,8 @@ class Route
|
|||||||
$vars = self::parseVar($key);
|
$vars = self::parseVar($key);
|
||||||
$item[] = ['rule' => $key, 'route' => $route, 'var' => $vars, 'option' => $options, 'pattern' => $patterns];
|
$item[] = ['rule' => $key, 'route' => $route, 'var' => $vars, 'option' => $options, 'pattern' => $patterns];
|
||||||
// 设置路由标识
|
// 设置路由标识
|
||||||
self::name($route, [$name . ($key ? '/' . $key : ''), $vars, self::$domain]);
|
$suffix = isset($options['ext']) ? $options['ext'] : null;
|
||||||
|
self::name($route, [$name . ($key ? '/' . $key : ''), $vars, self::$domain, $suffix]);
|
||||||
}
|
}
|
||||||
self::$rules['*'][$name] = ['rule' => $item, 'route' => '', 'var' => [], 'option' => $option, 'pattern' => $pattern];
|
self::$rules['*'][$name] = ['rule' => $item, 'route' => '', 'var' => [], 'option' => $option, 'pattern' => $pattern];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,6 +80,9 @@ class Url
|
|||||||
if (!empty($match[1])) {
|
if (!empty($match[1])) {
|
||||||
$domain = $match[1];
|
$domain = $match[1];
|
||||||
}
|
}
|
||||||
|
if (!empty($match[2])) {
|
||||||
|
$suffix = $match[2];
|
||||||
|
}
|
||||||
} elseif (!empty($rule) && isset($name)) {
|
} elseif (!empty($rule) && isset($name)) {
|
||||||
throw new \InvalidArgumentException('route name not exists:' . $name);
|
throw new \InvalidArgumentException('route name not exists:' . $name);
|
||||||
} else {
|
} else {
|
||||||
@@ -288,18 +291,18 @@ class Url
|
|||||||
public static function getRuleUrl($rule, &$vars = [])
|
public static function getRuleUrl($rule, &$vars = [])
|
||||||
{
|
{
|
||||||
foreach ($rule as $item) {
|
foreach ($rule as $item) {
|
||||||
list($url, $pattern, $domain) = $item;
|
list($url, $pattern, $domain, $suffix) = $item;
|
||||||
if (empty($pattern)) {
|
if (empty($pattern)) {
|
||||||
return [$url, $domain];
|
return [$url, $domain, $suffix];
|
||||||
}
|
}
|
||||||
foreach ($pattern as $key => $val) {
|
foreach ($pattern as $key => $val) {
|
||||||
if (isset($vars[$key])) {
|
if (isset($vars[$key])) {
|
||||||
$url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key . '', '<' . $key . '>'], $vars[$key], $url);
|
$url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key . '', '<' . $key . '>'], $vars[$key], $url);
|
||||||
unset($vars[$key]);
|
unset($vars[$key]);
|
||||||
$result = [$url, $domain];
|
$result = [$url, $domain, $suffix];
|
||||||
} elseif (2 == $val) {
|
} elseif (2 == $val) {
|
||||||
$url = str_replace(['/[:' . $key . ']', '[:' . $key . ']', '<' . $key . '?>'], '', $url);
|
$url = str_replace(['/[:' . $key . ']', '[:' . $key . ']', '<' . $key . '?>'], '', $url);
|
||||||
$result = [$url, $domain];
|
$result = [$url, $domain, $suffix];
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user