修正空控制器名称和关键字冲突的问题

空控制器默认改为 Error 并且可以自定义 通过修改 empty_controller 参数
This commit is contained in:
thinkphp
2015-09-26 21:52:03 +08:00
parent 5c00b163ae
commit 9dcfeefb1f
4 changed files with 8 additions and 5 deletions

View File

@@ -10,6 +10,7 @@ return [
'default_module' => 'index', // 默认模块名 'default_module' => 'index', // 默认模块名
'default_controller' => 'index', // 默认控制器名 'default_controller' => 'index', // 默认控制器名
'default_action' => 'index', // 默认操作名 'default_action' => 'index', // 默认操作名
'empty_controller' => 'error', // 默认的空控制器名
'action_suffix' => '', // 操作方法后缀 'action_suffix' => '', // 操作方法后缀
'url_model' => 1, // URL模式 'url_model' => 1, // URL模式
'url_request_uri' => 'REQUEST_URI', // 获取当前页面地址的系统变量 默认为REQUEST_URI 'url_request_uri' => 'REQUEST_URI', // 获取当前页面地址的系统变量 默认为REQUEST_URI

View File

@@ -83,7 +83,7 @@ class App {
// 操作绑定到类后 固定执行run入口 // 操作绑定到类后 固定执行run入口
$action = 'run'; $action = 'run';
}else{ }else{
$instance = Loader::controller(CONTROLLER_NAME); $instance = Loader::controller(CONTROLLER_NAME,'',$config['empty_controller']);
// 获取当前操作名 // 获取当前操作名
$action = ACTION_NAME . $config['action_suffix']; $action = ACTION_NAME . $config['action_suffix'];
} }

View File

@@ -154,10 +154,12 @@ class Loader {
* 实例化(分层)控制器 格式:[模块名/]控制器名 * 实例化(分层)控制器 格式:[模块名/]控制器名
* @param string $name 资源地址 * @param string $name 资源地址
* @param string $layer 控制层名称 * @param string $layer 控制层名称
* @param string $empty 空控制器名称
* @return Object|false * @return Object|false
*/ */
static public function controller($name, $layer = CONTROLLER_LAYER) { static public function controller($name, $layer = '', $empty='') {
static $_instance = []; static $_instance = [];
$layer = $layer ? : CONTROLLER_LAYER;
if(isset($_instance[$name.$layer])) { if(isset($_instance[$name.$layer])) {
return $_instance[$name . $layer]; return $_instance[$name . $layer];
} }
@@ -171,8 +173,8 @@ class Loader {
$action = new $class; $action = new $class;
$_instance[$name . $layer] = $action; $_instance[$name . $layer] = $action;
return $action; return $action;
}elseif(class_exists($module . '\\' . $layer . '\\Empty')){ }elseif($empty && class_exists($module . '\\' . $layer . '\\'.$empty)){
$class = $module . '\\' . $layer . '\\Empty'; $class = $module . '\\' . $layer . '\\'.$empty;
return new $class; return new $class;
}else{ }else{
return false; return false;

View File

@@ -105,7 +105,7 @@ class View {
* @param string $cache_id 模板缓存标识 * @param string $cache_id 模板缓存标识
* @return string * @return string
*/ */
public function fetch($template, $vars = [], $cache_id='',$renderContent=false) { public function fetch($template='', $vars = [], $cache_id='',$renderContent=false) {
if(!$renderContent){ if(!$renderContent){
// 获取模板文件名 // 获取模板文件名
$template = $this->parseTemplate($template); $template = $this->parseTemplate($template);