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];
} 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);

View File

@@ -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()