From c4edb2e426619e6609a674380db0adf75c44a5b3 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Thu, 9 Jun 2016 08:50:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BRoute=E7=B1=BB=20=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=88=AB=E5=90=8D=E6=94=AF=E6=8C=81=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Route.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/library/think/Route.php b/library/think/Route.php index d2a708ec..a4e98504 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -445,15 +445,16 @@ class Route * 注册别名路由 * @access public * @param string|array $rule 路由别名 - * @param string $route 别名对应的路由地址 + * @param string $route 路由地址 + * @param array $option 路由参数 * @return void */ - public static function alias($rule, $route = '') + public static function alias($rule, $route = '', $option = []) { if (is_array($rule)) { - self::$alias[$rule] = array_merge(self::$alias, $alias); + self::$alias = array_merge(self::$alias, $rule); } else { - self::$alias[$rule] = $route; + self::$alias[$rule] = $option ? [$route, $option] : $route; } } @@ -632,8 +633,17 @@ class Route if (strpos($url, '/') && isset(self::$alias[strstr($url, '/', true)])) { // 路由别名 $array = explode('/', $url, 2); - $rule = self::$alias[$array[0]]; - if (0 === strpos($rule, '\\')) { + $item = self::$alias[$array[0]]; + + if (is_array($item)) { + list($rule, $option) = $item; + } else { + $rule = $item; + } + // 参数有效性检查 + if (isset($option) && !self::checkOption($option, $url, $request)) { + // 路由不匹配 + } elseif (0 === strpos($rule, '\\')) { // 路由到类 return self::bindToClass($array[1], substr($rule, 1)); } elseif (0 === strpos($url, '@')) {