我使用codeigniter 2.1.3。 我注意到一个名为HMVC(Hierarchical MVC)的很好的模块,它允许以分层方式开发MVC,如名称所示。所以我下载并安装了它。
但是,在完成每个可用教程中解释的操作后,我在尝试访问我创建的测试页时遇到404错误。
搜索一段时间后没有成功,我决定安装最新版本的codeigniter(2.2.0)。我按照教程,它工作。
我决定尝试比较两个版本(一个有效的版本,以及那个没有的版本)来查看调用了哪些源代码,以及我的codeigniter v2.1.3中似乎失败了什么。
我发现在我的codeigniter 2.1.3版中,发生错误是因为在类/system/core/Router.php的函数_validate_request中,程序到达函数的末尾,因为它还没有找到与URI匹配的控制器类(在本例中为localhost / codeigniter / users:假设我检测到我有一个名为users的模块,它应该使用application / modules / users中的控制器来加载页面)。所以程序到达函数show_404()(见下文)并生成404错误:
// If we've gotten this far it means that the URI does not correlate to a valid
// controller class. We will now see if there is an override
if ( ! empty($this->routes['404_override']))
{
$x = explode('/', $this->routes['404_override']);
$this->set_class($x[0]);
$this->set_method(isset($x[1]) ? $x[1] : 'index');
return $x;
}
// Nothing else to do at this point but show a 404
show_404($segments[0]);
当检查版本2.2.0(有效的版本)中发生的情况时,使用另一种类型的路由器类:application / third_party / MX / Router.php(而不是默认的/system/core/Router.php)
我安装了application / third_party / MX / Router.php。
所以基本上,我的问题是,不知何故,codeigniter没有设置正确的Router.php文件,但我不明白我做错了什么。
有人可以帮忙吗?
编辑:我逐步将我的网站迁移到HMVC工作的codeigniter版本,同时连续检查一切是否仍然有效。一切顺利,直到我迁移文件application / config / config.php。毕竟这一定是配置问题。
编辑2:我没有找到问题的根本原因。我最终在codeigniter的新功能版本上迁移了整个网站,现在它可以工作了。