【问题标题】:HMVC on CodeIgniter 3 not working - getting 404CodeIgniter 3 上的 HMVC 不工作 - 得到 404
【发布时间】:2015-06-16 11:18:32
【问题描述】:

我正在尝试在我的 CI 3 安装中设置模块化,但似乎无法正常工作。我正在使用在“分支”选项卡下找到 here 的wiredesignz 包。

我做的步骤:

  1. 在应用程序/核心中复制了 MY_Loader 和 MY_Router
  2. 在 application/third_party 中复制了 MX 文件夹
  3. 将这行代码复制到application/development/config.php(我已经将config.php移到了开发文件夹下)

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

  4. 创建

    应用程序 - 模块 -- 控制器 --- 测试.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 错误。

任何想法我做错了什么?

【问题讨论】:

  • .htaccess?你试过localhost/myapp/index.php/test吗?
  • @Tpojka 这两种方法我都试过了,都没用
  • 是的,您一直在扩展 CI_Controller 而不是 MX_Controller。检查下面的一个答案。
  • 你遵守here的所有12个安装点了吗?
  • 检查您的routes.php 文件

标签: php codeigniter hmvc


【解决方案1】:

尝试将 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"; 

【讨论】:

  • 你不需要在配置中设置模块路径
  • 确保你在我的回答中也设置了你的路线
  • 我相信文档说您需要在 config.php 中设置模块路径
  • 我也设置了这样的路由,但仍然没有运气
  • 如果您想创建管理页面/控制器,则使用您所说的此路由。这个测试控制器是一个简单的测试控制器。但是我已经像这样设置了我的路由,但仍然不起作用
【解决方案2】:

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

意思是这样的

应用程序/模块/测试/控制器/Test.php

【讨论】:

  • 是的,我忘记在模块下创建“测试”文件夹。我犯了一个愚蠢的错误.. 无论如何感谢您的反馈!
【解决方案3】:

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

我测试了作品

【讨论】:

    【解决方案4】:

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

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

    工作正常。

    【讨论】:

      【解决方案5】:

      以防万一有人仍然有这个问题,即使文件/文件夹结构是正确的,就我而言,我花了几天时间才弄清楚,还有 2 个额外的问题:

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

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多