路由支持路由到多级控制器访问

This commit is contained in:
thinkphp
2015-11-23 18:15:53 +08:00
parent bd930b397e
commit f402a7cb3d
2 changed files with 5 additions and 5 deletions

View File

@@ -63,13 +63,13 @@ class App
Hook::listen('app_run');
// 执行操作
if (!preg_match('/^[A-Za-z](\/|\w)*$/', CONTROLLER_NAME)) {
if (!preg_match('/^[A-Za-z](\/|\.|\w)*$/', CONTROLLER_NAME)) {
// 安全检测
$instance = false;
} elseif ($config['action_bind_class']) {
// 操作绑定到类:模块\controller\控制器\操作
if (is_dir(MODULE_PATH . CONTROLLER_LAYER . '/' . CONTROLLER_NAME)) {
$namespace = MODULE_NAME . '\\' . CONTROLLER_LAYER . '\\' . CONTROLLER_NAME . '\\';
if (is_dir(MODULE_PATH . CONTROLLER_LAYER . '/' . str_replace('.', '/', CONTROLLER_NAME))) {
$namespace = MODULE_NAME . '\\' . CONTROLLER_LAYER . '\\' . str_replace('.', '\\', CONTROLLER_NAME) . '\\';
} else {
// 空控制器
$namespace = MODULE_NAME . '\\' . CONTROLLER_LAYER . '\\' . $config['empty_controller'] . '\\';
@@ -92,7 +92,7 @@ class App
$action = ACTION_NAME . $config['action_suffix'];
}
if (!$instance) {
throw new Exception('[ ' . MODULE_NAME . '\\' . CONTROLLER_LAYER . '\\' . Loader::parseName(CONTROLLER_NAME, 1) . ' ] not exists');
throw new Exception('[ ' . MODULE_NAME . '\\' . CONTROLLER_LAYER . '\\' . Loader::parseName(str_replace('.', '\\', CONTROLLER_NAME), 1) . ' ] not exists');
}
try {

View File

@@ -183,7 +183,7 @@ class Loader
} else {
$module = MODULE_NAME;
}
$class = $module . '\\' . $layer . '\\' . self::parseName($name, 1);
$class = $module . '\\' . $layer . '\\' . self::parseName(str_replace('.', '\\', $name), 1);
if (class_exists($class)) {
$action = new $class;
$_instance[$name . $layer] = $action;