CodeIgniter(3.1.4)框架中设置默认控制器

本文介绍了一种解决默认控制器放置在子目录中时无法正常加载的问题的方法。通过修改Router.php文件中的控制器查找逻辑,并调整route.php配置文件中的默认控制器路径,实现了对子目录下控制器的正确调用。

创建的目录结构:

 

如果是以上这种目录分布结构,则在controller文件夹下没有相应的控制器文件。如果在浏览器中直接使用 【http://localhost】则找不到相应的控制器。

 

必须进行以下设置:

第一:修改代码:

/**
 * 3.1.4 原始代码 - [system/Router.php] - _set_default_controller();
 */
// if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php'))
// {
// 	// This will trigger 404 later
// 	return;
// }

/**
 * 3.1.4 修复代码 - [system/Router.php] - _set_default_controller();
 *
 * 修复 - 不能将默认控制器放在子目录中
 */
if ( ! file_exists(APPPATH . 'controllers/' . $this->directory . ucfirst($class) . '.php'))
{
    $path_arr = explode('/', trim($this->default_controller, '/'));

    $class = ucfirst($path_arr[1]);
    $method = isset($path_arr[2]) ? $path_arr[2]: 'index';

    if (file_exists(APPPATH . 'controllers/' . $this->directory . $path_arr[0]. '/' . $class . '.php'))
    {
        $this->directory .= $path_arr[0]. '/';
    }
}

  

第二:修改application/config/route.php文件中的默认控制器。

 控制器中的方法:

* 可以调用控制器中的任意方法。

 

 

最后:进行调用:

 

 

 修复后,可以默认调用子文件夹中的控制器。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值