CodeIgniter 3 上的 HMVC 无法正常工作 - 获取 404

HMVC on CodeIgniter 3 not working - getting 404

我正在尝试在我的 CI 3 安装中设置模块化,但似乎不起作用。我正在使用在 "Branches" 选项卡下找到 here 的 wiredesignz 包。

我做的步骤:

  1. 已将 MY_Loader & MY_Router 复制到 application/core
  2. 已将 MX 文件夹复制到 application/third_party
  3. 将这行代码复制到application/development/config.php(我已经将config.php移到开发文件夹下)

    // 设置模块位置 $config['modules_locations'] = 数组( APPPATH.'modules/' => '../../modules/', );

  4. 已创建

    申请 - 模块 -- 控制器 --- Test.php - 楷模 -- 意见 --- test.php

和我的Test.php一样

class Test extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->load->view('test');
    }
} 

只是为了检查它是否工作正常,但是当我点击我的浏览器时 localhost/myapp/test,我收到了 404 错误。

知道我做错了什么吗?

尝试将 CI_Controller 更改为 MX_Controller

class Test extends MX_Controller {

    function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->load->view('test');
    }
} 

但我认为您还需要子模块文件夹示例

modules => admin => controllers
modules => admin => controllers => Test.php
modules => admin => models
modules => admin => views
modules => admin => views => test.php

确保配置路由

示例:

$route['test'] = "admin/test/index"; 

您是否尝试过将控制器和视图放在模块文件夹内的测试文件夹中?

意思差不多

application/modules/test/controllers/Test.php

Codeigniter 3 的 HMVC 模块文件夹 How to implement HMVC in codeigniter 3.0?

我测试了作品

在 application/third_party/MX/Loader.php 行 307 之后添加此行,

protected function _ci_object_to_array($object) 
 {
    return is_object($object) ? get_object_vars($object) : $object;
    }

工作正常。

以防万一有人仍然有这个问题,即使 file/folder 结构是正确的,在我的例子中,我花了几天时间才弄清楚,还有 2 个额外的问题:

  1. 这我不是 100% 确定,但如果我没记错的话我看不到子文件夹所以我不得不再次对它们进行 chmod 755
  2. 这就是杀手:我的控制器文件名是小写的("welcome.php" 而不是 "Welcome.php")。一旦我用大写重命名文件,我就摆脱了 404,一切正常。