diff --git a/library/think/route.php b/library/think/route.php index 56f4e1b0..f625d483 100644 --- a/library/think/route.php +++ b/library/think/route.php @@ -29,7 +29,7 @@ class Route // 变量规则 private static $pattern = []; // 路由别名 用于自动生成 - public static $alias = []; + private static $alias = []; // 添加URL映射规则 public static function map($map, $route = '') @@ -629,4 +629,27 @@ class Route return $result['route']; } } + + // 根据路由别名和参数获取URL地址 + public static function getRouteUrl($name, $params = []) + { + if (!empty(self::$alias[$name])) { + $url = self::$alias[$name]; + if (is_string($params)) { + parse_str($params, $vars); + } else { + $vars = $params; + } + foreach ($vars as $key => $val) { + if (false !== strpos($url, '[:' . $key . ']')) { + $url = str_replace('[:' . $key . ']', $val, $url); + } else { + $url = str_replace(':' . $key, $val, $url); + } + } + return $url; + } else { + return null; + } + } } diff --git a/library/think/url.php b/library/think/url.php index cf5b0ec1..cdd00f38 100644 --- a/library/think/url.php +++ b/library/think/url.php @@ -99,9 +99,7 @@ class Url // 根据路由名称和参数生成URL地址 public static function route($name, $params) { - if (isset(Route::$alias[$name])) { - - } + return Route::getRouteUrl($name, $params); } // 解析URL和参数 域名