From 6e4898190ad53d02f4337023c56135986555ad2f Mon Sep 17 00:00:00 2001 From: thinkphp Date: Mon, 28 Nov 2016 16:35:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Route.php | 10 +++++----- tests/thinkphp/library/think/routeTest.php | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/library/think/Route.php b/library/think/Route.php index 2060f134..e2ebd655 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -1480,15 +1480,15 @@ class Route $result = ['type' => 'redirect', 'url' => $route, 'status' => isset($option['status']) ? $option['status'] : 301]; } elseif (false !== strpos($route, '\\')) { // 路由到方法 - list($route, $var) = self::parseUrlPath($route); - $route = str_replace('/', '@', $route); - $method = strpos($route, '@') ? explode('@', $route) : $route; - $result = ['type' => 'method', 'method' => $method, 'var' => $var]; + list($path, $var) = self::parseUrlPath($route); + $route = str_replace('/', '@', implode('/', $path)); + $method = strpos($route, '@') ? explode('@', $route) : $route; + $result = ['type' => 'method', 'method' => $method, 'var' => $var]; } elseif (0 === strpos($route, '@')) { // 路由到控制器 $route = substr($route, 1); list($route, $var) = self::parseUrlPath($route); - $result = ['type' => 'controller', 'controller' => $route, 'var' => $var]; + $result = ['type' => 'controller', 'controller' => implode('/', $route), 'var' => $var]; } else { // 路由到模块/控制器/操作 $result = self::parseModule($route); diff --git a/tests/thinkphp/library/think/routeTest.php b/tests/thinkphp/library/think/routeTest.php index a86c21e1..b0215cee 100644 --- a/tests/thinkphp/library/think/routeTest.php +++ b/tests/thinkphp/library/think/routeTest.php @@ -227,7 +227,7 @@ class routeTest extends \PHPUnit_Framework_TestCase { $request = Request::instance(); Route::get('say/:name', '@index/hello'); - $this->assertEquals(['type' => 'controller', 'controller' => 'index/hello'], Route::check($request, 'say/thinkphp')); + $this->assertEquals(['type' => 'controller', 'controller' => 'index/hello', 'var' => []], Route::check($request, 'say/thinkphp')); } public function testRouteToMethod() @@ -235,8 +235,8 @@ class routeTest extends \PHPUnit_Framework_TestCase $request = Request::instance(); Route::get('user/:name', '\app\index\service\User::get', [], ['name' => '\w+']); Route::get('info/:name', '\app\index\model\Info@getInfo', [], ['name' => '\w+']); - $this->assertEquals(['type' => 'method', 'method' => '\app\index\service\User::get'], Route::check($request, 'user/thinkphp')); - $this->assertEquals(['type' => 'method', 'method' => ['\app\index\model\Info', 'getInfo']], Route::check($request, 'info/thinkphp')); + $this->assertEquals(['type' => 'method', 'method' => '\app\index\service\User::get', 'var' => []], Route::check($request, 'user/thinkphp')); + $this->assertEquals(['type' => 'method', 'method' => ['\app\index\model\Info', 'getInfo'], 'var' => []], Route::check($request, 'info/thinkphp')); } public function testRouteToRedirect()