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

空控制器默认改为 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_controller' => 'index', // 默认控制器名
'default_action' => 'index', // 默认操作名
'empty_controller' => 'error', // 默认的空控制器名
'action_suffix' => '', // 操作方法后缀
'url_model' => 1, // URL模式
'url_request_uri' => 'REQUEST_URI', // 获取当前页面地址的系统变量 默认为REQUEST_URI

View File

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

View File

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

View File

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