Codeigniter,HMVC:从不调用MX_Router,导致404错误

时间:2014-08-17 20:20:28

标签: php codeigniter web

我使用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的新功能版本上迁移了整个网站,现在它可以工作了。

0 个答案:

没有答案