mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 07:12:47 +08:00
改进 路由到控制器的地址变量
This commit is contained in:
@@ -559,24 +559,25 @@ class Route
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (0 === strpos($url, '/') || 0 === strpos($url, 'http')) {
|
if (0 === strpos($url, '/') || 0 === strpos($url, 'http')) {
|
||||||
// 路由重定向跳转
|
|
||||||
if (strpos($url, ':')) {
|
if (strpos($url, ':')) {
|
||||||
// 传递动态参数
|
// 传递动态参数
|
||||||
$values = array_values($matches);
|
$values = array_values($matches);
|
||||||
$url = preg_replace('/:(\d+)/e', '$values[\\1-1]', $url);
|
$url = preg_replace('/:(\d+)/e', '$values[\\1-1]', $url);
|
||||||
}
|
}
|
||||||
|
// 路由到重定向地址
|
||||||
$result = ['type' => 'redirect', 'url' => $url, 'status' => (is_array($route) && isset($route[1])) ? $route[1] : 301];
|
$result = ['type' => 'redirect', 'url' => $url, 'status' => (is_array($route) && isset($route[1])) ? $route[1] : 301];
|
||||||
} elseif (0 === strpos($url, '\\')) {
|
} elseif (0 === strpos($url, '\\')) {
|
||||||
// 路由到方法
|
// 路由到方法
|
||||||
$result = ['type' => 'method', 'method' => $route, 'params' => $matches];
|
$result = ['type' => 'method', 'method' => $route, 'params' => $matches];
|
||||||
} elseif (0 === strpos($url, '@')) {
|
} elseif (0 === strpos($url, '@')) {
|
||||||
// 路由到控制器
|
// 传递动态参数
|
||||||
if (strpos($url, ':')) {
|
foreach ($matches as $key => $val) {
|
||||||
// 传递动态参数
|
if (strpos($url, ':' . $key)) {
|
||||||
foreach ($matches as $key => $val) {
|
|
||||||
$url = str_replace(':' . $key, $val, $url);
|
$url = str_replace(':' . $key, $val, $url);
|
||||||
|
unset($matches[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 路由到控制器
|
||||||
$result = ['type' => 'controller', 'controller' => substr($url, 1), 'params' => $matches];
|
$result = ['type' => 'controller', 'controller' => substr($url, 1), 'params' => $matches];
|
||||||
} else {
|
} else {
|
||||||
// 解析路由地址
|
// 解析路由地址
|
||||||
@@ -594,6 +595,7 @@ class Route
|
|||||||
$var = array_merge($matches, $result['var']);
|
$var = array_merge($matches, $result['var']);
|
||||||
// 解析剩余的URL参数
|
// 解析剩余的URL参数
|
||||||
self::parseUrlParams(implode('/', $paths), $var);
|
self::parseUrlParams(implode('/', $paths), $var);
|
||||||
|
// 路由到模块/控制器/操作
|
||||||
$result = ['type' => 'module', 'module' => $result['route']];
|
$result = ['type' => 'module', 'module' => $result['route']];
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
|
|||||||
Reference in New Issue
Block a user