mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 12:42:48 +08:00
修正Url类生成
This commit is contained in:
@@ -275,7 +275,7 @@ class Route
|
||||
self::$rules[$type][$rule] = ['rule' => $rule, 'route' => $route, 'var' => $vars, 'option' => $option, 'pattern' => $pattern];
|
||||
if ('*' == $type) {
|
||||
// 注册路由快捷方式
|
||||
foreach (['GET', 'POST', 'PUT', 'DELETE'] as $method) {
|
||||
foreach (['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'] as $method) {
|
||||
self::$rules[$method][$rule] = true;
|
||||
}
|
||||
}
|
||||
@@ -350,11 +350,11 @@ class Route
|
||||
self::$rules[$type][$name] = ['rule' => $item, 'route' => '', 'var' => [], 'option' => $option, 'pattern' => $pattern];
|
||||
}
|
||||
if ('*' == $type) {
|
||||
foreach (['GET', 'POST', 'PUT', 'DELETE'] as $method) {
|
||||
foreach (['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'] as $method) {
|
||||
if (!isset(self::$rules[$method][$name])) {
|
||||
self::$rules[$method][$name] = true;
|
||||
} else {
|
||||
self::$rules[$method][$name] = array_merge(self::$rules[$method][$name], self::$rules['*'][$name]);
|
||||
self::$rules[$method][$name] = array_merge(self::$rules['*'][$name], self::$rules[$method][$name]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -730,11 +730,10 @@ class Route
|
||||
|
||||
// 路由规则检测
|
||||
if (!empty($rules)) {
|
||||
foreach ($rules as $group => $val) {
|
||||
foreach ($rules as $rule => $val) {
|
||||
if (true === $val) {
|
||||
$val = self::$rules['*'][$group];
|
||||
$val = self::$rules['*'][$rule];
|
||||
}
|
||||
$rule = $val['rule'];
|
||||
$route = $val['route'];
|
||||
$vars = $val['var'];
|
||||
$option = $val['option'];
|
||||
@@ -749,19 +748,19 @@ class Route
|
||||
$miss = $route;
|
||||
continue;
|
||||
}
|
||||
if (is_array($rule)) {
|
||||
if (is_array($val['rule'])) {
|
||||
// 分组路由
|
||||
if (($pos = strpos($group, ':')) || ($pos = strpos($group, '<'))) {
|
||||
$str = substr($group, 0, $pos);
|
||||
if (($pos = strpos($rule, ':')) || ($pos = strpos($rule, '<'))) {
|
||||
$str = substr($rule, 0, $pos);
|
||||
} else {
|
||||
$str = $group;
|
||||
$str = $rule;
|
||||
}
|
||||
if (0 !== strpos($url, $str)) {
|
||||
continue;
|
||||
}
|
||||
$missGroup = false;
|
||||
// 匹配到路由分组
|
||||
foreach ($rule as $key => $item) {
|
||||
foreach ($val['rule'] as $item) {
|
||||
$key = $item['rule'];
|
||||
$route = $item['route'];
|
||||
$vars = $item['var'];
|
||||
@@ -778,7 +777,7 @@ class Route
|
||||
$missGroup = $item;
|
||||
continue;
|
||||
}
|
||||
$key = $group . '/' . ltrim($key, '/');
|
||||
$key = $rule . '/' . ltrim($key, '/');
|
||||
$result = self::checkRule($key, $route, $url, $pattern, $option);
|
||||
if (false !== $result) {
|
||||
$request->routeInfo(['rule' => $key, 'route' => $route, 'pattern' => $pattern, 'option' => $option]);
|
||||
|
||||
@@ -266,25 +266,19 @@ class Url
|
||||
}
|
||||
// 获取路由定义
|
||||
$array = Route::getRules();
|
||||
unset($array['*']);
|
||||
foreach ($array as $type => $rules) {
|
||||
foreach ($rules as $group => $val) {
|
||||
if (true === $val) {
|
||||
foreach ($rules as $rule => $val) {
|
||||
if (true === $val || empty($val['rule'])) {
|
||||
continue;
|
||||
}
|
||||
$rule = $val['rule'];
|
||||
$route = $val['route'];
|
||||
$vars = $val['var'];
|
||||
$option = $val['option'];
|
||||
$pattern = $val['pattern'];
|
||||
if (is_array($rule)) {
|
||||
foreach ($rule as $key => $val) {
|
||||
$key = $val['rule'];
|
||||
$route = $val['route'];
|
||||
$var = $val['var'];
|
||||
$option = $val['option'];
|
||||
$pattern = $val['pattern'];
|
||||
$param = [];
|
||||
$route = $val['route'];
|
||||
$vars = $val['var'];
|
||||
if (is_array($val['rule'])) {
|
||||
foreach ($val['rule'] as $val) {
|
||||
$key = $val['rule'];
|
||||
$route = $val['route'];
|
||||
$var = $val['var'];
|
||||
$param = [];
|
||||
if (is_array($route)) {
|
||||
$route = implode('\\', $route);
|
||||
} elseif ($route instanceof \Closure) {
|
||||
@@ -294,7 +288,7 @@ class Url
|
||||
parse_str($str, $param);
|
||||
}
|
||||
$var = array_merge($vars, $var);
|
||||
$item[$route][] = [$group . '/' . $key, $var, $param];
|
||||
$item[$route][] = [$rule . '/' . $key, $var, $param];
|
||||
}
|
||||
} else {
|
||||
$param = [];
|
||||
|
||||
Reference in New Issue
Block a user