diff --git a/library/think/Route.php b/library/think/Route.php index 73b4b039..ad06d58f 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -301,7 +301,7 @@ class Route } $vars = self::parseVar($rule); if (isset($name)) { - self::$name[$name] = [$rule, $vars, self::$domain]; + self::$name[$name][] = [$rule, $vars, self::$domain]; } if ($group) { if ('*' != $type) { diff --git a/library/think/Url.php b/library/think/Url.php index d6237eb1..4e980adb 100644 --- a/library/think/Url.php +++ b/library/think/Url.php @@ -234,18 +234,19 @@ class Url // 匹配路由地址 public static function getRuleUrl($rule, &$vars = []) { - list($url, $pattern) = $rule; - foreach ($pattern as $key => $val) { - if (isset($vars[$key])) { - $url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key . '', '<' . $key . '>'], $vars[$key], $url); - unset($vars[$key]); - } elseif (2 == $val) { - $url = str_replace(['/[:' . $key . ']', '[:' . $key . ']', '<' . $key . '?>'], '', $url); - } else { - return false; + foreach ($rule as $item) { + list($url, $pattern) = $item; + foreach ($pattern as $key => $val) { + if (isset($vars[$key])) { + $url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key . '', '<' . $key . '>'], $vars[$key], $url); + unset($vars[$key]); + return $url; + } elseif (2 == $val) { + return str_replace(['/[:' . $key . ']', '[:' . $key . ']', '<' . $key . '?>'], '', $url); + } } } - return $url; + return false; } // 指定当前生成URL地址的root diff --git a/tests/thinkphp/library/think/urlTest.php b/tests/thinkphp/library/think/urlTest.php index 17651cb7..d8c748fd 100644 --- a/tests/thinkphp/library/think/urlTest.php +++ b/tests/thinkphp/library/think/urlTest.php @@ -56,7 +56,7 @@ class urlTest extends \PHPUnit_Framework_TestCase public function testBuildMethod() { - Route::get('blog/:id', ['\app\index\controller\blog', 'read']); + Route::get('blog/:id', '\app\index\controller\blog@read'); $this->assertEquals('/blog/10.html', Url::build('\app\index\controller\blog\read', 'id=10', 'html')); }