mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 12:42:48 +08:00
改进Url类支持混合变量路由规则定义
This commit is contained in:
@@ -222,6 +222,12 @@ class Url
|
||||
} elseif (false !== strpos($url, ':' . $key)) {
|
||||
$url = str_replace(':' . $key, $val, $url);
|
||||
unset($vars[$key]);
|
||||
} elseif (false !== strpos($url, '<' . $key . '>')) {
|
||||
$url = str_replace('<' . $key . '>', $val, $url);
|
||||
unset($vars[$key]);
|
||||
} elseif (false !== strpos($url, '<' . $key . '?>')) {
|
||||
$url = str_replace('<' . $key . '?>', $val, $url);
|
||||
unset($vars[$key]);
|
||||
}
|
||||
}
|
||||
return $url;
|
||||
@@ -286,6 +292,18 @@ class Url
|
||||
$var = [];
|
||||
foreach (explode('/', $rule) as $val) {
|
||||
$optional = false;
|
||||
if (false !== strpos($val, '<') && preg_match_all('/<(\w+(\??))>/', $val, $matches)) {
|
||||
foreach ($matches[1] as $name) {
|
||||
if (strpos($name, '?')) {
|
||||
$name = substr($name, 0, -1);
|
||||
$optional = true;
|
||||
} else {
|
||||
$optional = false;
|
||||
}
|
||||
$var[$name] = $optional ? 2 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (0 === strpos($val, '[:')) {
|
||||
// 可选参数
|
||||
$optional = true;
|
||||
@@ -294,8 +312,7 @@ class Url
|
||||
if (0 === strpos($val, ':')) {
|
||||
// URL变量
|
||||
$name = substr($val, 1);
|
||||
$type = $optional ? 2 : 1;
|
||||
$var[$name] = $type;
|
||||
$var[$name] = $optional ? 2 : 1;
|
||||
}
|
||||
}
|
||||
return $var;
|
||||
|
||||
Reference in New Issue
Block a user