This commit is contained in:
thinkphp
2016-11-28 16:35:24 +08:00
parent 357f1706e5
commit 6e4898190a
2 changed files with 8 additions and 8 deletions

View File

@@ -1480,15 +1480,15 @@ class Route
$result = ['type' => 'redirect', 'url' => $route, 'status' => isset($option['status']) ? $option['status'] : 301]; $result = ['type' => 'redirect', 'url' => $route, 'status' => isset($option['status']) ? $option['status'] : 301];
} elseif (false !== strpos($route, '\\')) { } elseif (false !== strpos($route, '\\')) {
// 路由到方法 // 路由到方法
list($route, $var) = self::parseUrlPath($route); list($path, $var) = self::parseUrlPath($route);
$route = str_replace('/', '@', $route); $route = str_replace('/', '@', implode('/', $path));
$method = strpos($route, '@') ? explode('@', $route) : $route; $method = strpos($route, '@') ? explode('@', $route) : $route;
$result = ['type' => 'method', 'method' => $method, 'var' => $var]; $result = ['type' => 'method', 'method' => $method, 'var' => $var];
} elseif (0 === strpos($route, '@')) { } elseif (0 === strpos($route, '@')) {
// 路由到控制器 // 路由到控制器
$route = substr($route, 1); $route = substr($route, 1);
list($route, $var) = self::parseUrlPath($route); list($route, $var) = self::parseUrlPath($route);
$result = ['type' => 'controller', 'controller' => $route, 'var' => $var]; $result = ['type' => 'controller', 'controller' => implode('/', $route), 'var' => $var];
} else { } else {
// 路由到模块/控制器/操作 // 路由到模块/控制器/操作
$result = self::parseModule($route); $result = self::parseModule($route);

View File

@@ -227,7 +227,7 @@ class routeTest extends \PHPUnit_Framework_TestCase
{ {
$request = Request::instance(); $request = Request::instance();
Route::get('say/:name', '@index/hello'); 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() public function testRouteToMethod()
@@ -235,8 +235,8 @@ class routeTest extends \PHPUnit_Framework_TestCase
$request = Request::instance(); $request = Request::instance();
Route::get('user/:name', '\app\index\service\User::get', [], ['name' => '\w+']); Route::get('user/:name', '\app\index\service\User::get', [], ['name' => '\w+']);
Route::get('info/:name', '\app\index\model\Info@getInfo', [], ['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\service\User::get', 'var' => []], 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\model\Info', 'getInfo'], 'var' => []], Route::check($request, 'info/thinkphp'));
} }
public function testRouteToRedirect() public function testRouteToRedirect()