路由到类的方法和控制器方法 支持传入额外参数,用于方法的参数

This commit is contained in:
thinkphp
2016-11-28 16:12:04 +08:00
parent 1999bf947a
commit 5f7c75a2f5
2 changed files with 9 additions and 6 deletions

View File

@@ -141,11 +141,11 @@ class App
break;
case 'controller':
// 执行控制器操作
$data = Loader::action($dispatch['controller']);
$data = Loader::action($dispatch['controller'], $dispatch['var']);
break;
case 'method':
// 执行回调方法
$data = self::invokeMethod($dispatch['method']);
$data = self::invokeMethod($dispatch['method'], $dispatch['var']);
break;
case 'function':
// 执行闭包

View File

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