mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 15:12:48 +08:00
修正Route类和Url类对分组路由解析
This commit is contained in:
@@ -267,9 +267,9 @@ class Route
|
|||||||
}
|
}
|
||||||
$vars = self::parseVar($rule);
|
$vars = self::parseVar($rule);
|
||||||
if ($group) {
|
if ($group) {
|
||||||
self::$rules[$type][$group][0][] = [$rule, $route, $vars, $option, $pattern];
|
self::$rules[$type][$group]['rule'][] = ['rule' => $rule, 'route' => $route, 'var' => $vars, 'option' => $option, 'pattern' => $pattern];
|
||||||
} else {
|
} else {
|
||||||
self::$rules[$type][$rule] = [$rule, $route, $vars, $option, $pattern];
|
self::$rules[$type][$rule] = ['rule' => $rule, 'route' => $route, 'var' => $vars, 'option' => $option, 'pattern' => $pattern];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,10 +318,10 @@ class Route
|
|||||||
self::setGroup($name);
|
self::setGroup($name);
|
||||||
call_user_func_array($routes, []);
|
call_user_func_array($routes, []);
|
||||||
self::setGroup(null);
|
self::setGroup(null);
|
||||||
self::$rules[$type][$name][1] = '';
|
self::$rules[$type][$name]['route'] = '';
|
||||||
self::$rules[$type][$name][2] = self::parseVar($name);
|
self::$rules[$type][$name]['var'] = self::parseVar($name);
|
||||||
self::$rules[$type][$name][3] = $option;
|
self::$rules[$type][$name]['option'] = $option;
|
||||||
self::$rules[$type][$name][4] = $pattern;
|
self::$rules[$type][$name]['pattern'] = $pattern;
|
||||||
} else {
|
} else {
|
||||||
foreach ($routes as $key => $val) {
|
foreach ($routes as $key => $val) {
|
||||||
if (is_numeric($key)) {
|
if (is_numeric($key)) {
|
||||||
@@ -337,7 +337,7 @@ class Route
|
|||||||
$vars = self::parseVar($key);
|
$vars = self::parseVar($key);
|
||||||
$item[] = [$key, $route, $vars, isset($option1) ? $option1 : $option, isset($pattern1) ? $pattern1 : $pattern];
|
$item[] = [$key, $route, $vars, isset($option1) ? $option1 : $option, isset($pattern1) ? $pattern1 : $pattern];
|
||||||
}
|
}
|
||||||
self::$rules[$type][$name] = [$item, '', [], $option, $pattern];
|
self::$rules[$type][$name] = ['rule' => $item, 'route' => '', 'var' => [], 'option' => $option, 'pattern' => $pattern];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ($routes instanceof \Closure) {
|
if ($routes instanceof \Closure) {
|
||||||
@@ -702,7 +702,6 @@ class Route
|
|||||||
|
|
||||||
// 获取当前请求类型的路由规则
|
// 获取当前请求类型的路由规则
|
||||||
$rules = self::$rules[$request->method()];
|
$rules = self::$rules[$request->method()];
|
||||||
|
|
||||||
if (!empty(self::$rules['*'])) {
|
if (!empty(self::$rules['*'])) {
|
||||||
// 合并任意请求的路由规则
|
// 合并任意请求的路由规则
|
||||||
$rules = array_merge_recursive(self::$rules['*'], $rules);
|
$rules = array_merge_recursive(self::$rules['*'], $rules);
|
||||||
@@ -721,7 +720,11 @@ class Route
|
|||||||
// 路由规则检测
|
// 路由规则检测
|
||||||
if (!empty($rules)) {
|
if (!empty($rules)) {
|
||||||
foreach ($rules as $group => $val) {
|
foreach ($rules as $group => $val) {
|
||||||
list($rule, $route, $vars, $option, $pattern) = $val;
|
$rule = $val['rule'];
|
||||||
|
$route = $val['route'];
|
||||||
|
$vars = $val['var'];
|
||||||
|
$option = $val['option'];
|
||||||
|
$pattern = $val['pattern'];
|
||||||
|
|
||||||
// 参数有效性检查
|
// 参数有效性检查
|
||||||
if (!self::checkOption($option, $url, $request)) {
|
if (!self::checkOption($option, $url, $request)) {
|
||||||
@@ -745,7 +748,12 @@ class Route
|
|||||||
$missGroup = false;
|
$missGroup = false;
|
||||||
// 匹配到路由分组
|
// 匹配到路由分组
|
||||||
foreach ($rule as $key => $item) {
|
foreach ($rule as $key => $item) {
|
||||||
list($key, $route, $vars, $option, $pattern) = $item;
|
$key = $item['rule'];
|
||||||
|
$route = $item['route'];
|
||||||
|
$vars = $item['var'];
|
||||||
|
$option = $item['option'];
|
||||||
|
$pattern = $item['pattern'];
|
||||||
|
|
||||||
// 检查参数有效性
|
// 检查参数有效性
|
||||||
if (!self::checkOption($option, $url, $request)) {
|
if (!self::checkOption($option, $url, $request)) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -267,11 +267,19 @@ class Url
|
|||||||
// 获取路由定义
|
// 获取路由定义
|
||||||
$rules = Route::getRules();
|
$rules = Route::getRules();
|
||||||
foreach ($rules as $group => $val) {
|
foreach ($rules as $group => $val) {
|
||||||
list($rule, $route, $vars, $option, $pattern) = $val;
|
$rule = $val['rule'];
|
||||||
|
$route = $val['route'];
|
||||||
|
$vars = $val['var'];
|
||||||
|
$option = $val['option'];
|
||||||
|
$pattern = $val['pattern'];
|
||||||
if (is_array($rule)) {
|
if (is_array($rule)) {
|
||||||
foreach ($rule as $key => $val) {
|
foreach ($rule as $key => $val) {
|
||||||
list($key, $route, $var, $option, $pattern) = $val;
|
$key = $val['rule'];
|
||||||
$param = [];
|
$route = $val['route'];
|
||||||
|
$var = $val['var'];
|
||||||
|
$option = $val['option'];
|
||||||
|
$pattern = $val['pattern'];
|
||||||
|
$param = [];
|
||||||
if (is_array($route)) {
|
if (is_array($route)) {
|
||||||
$route = implode('\\', $route);
|
$route = implode('\\', $route);
|
||||||
} elseif ($route instanceof \Closure) {
|
} elseif ($route instanceof \Closure) {
|
||||||
|
|||||||
Reference in New Issue
Block a user