【问题标题】:Codeigniter HMVC subfolderCodeigniter HMVC 子文件夹
【发布时间】:2017-02-09 20:52:09
【问题描述】:

我使用 HMVC wiredesignz 第三方为 Codeigniter 使用模块化结构。

我有办法在模块目录中创建一个子文件夹吗?

我想要一些东西:

modules
    module1 
       controllers
           Module1.php
       ...
    admin
       module2
           controllers
               Module2.php
            ...    
       module3
           controllers
               Module3.php
            ...

当然我试过打电话:

base_url('admin/module2/index');

我遇到了 404 错误。这可能吗 ?

【问题讨论】:

  • 我想最好问问...你为什么要通过 url 访问子模块?
  • 哼?因为您在 codeigniter 中通过 URL 访问控制器。 Module2 = 控制器名称,索引 = 控制器中的函数名称。
  • 是的,我的问题是一个愚蠢的答案,但我试图得到的是,默认行为是控制器/方法。我会去读一读。
  • 好的,我刚刚打开了一个小测试站点,看起来开箱即用,模块中不能有模块,即子模块。但是,例如,如果您需要分离,您可以在管理模块中的控制器、模型、视图下拥有子文件夹。路由在 thirdparty/MX/Router.php 中处理,所以如果你真的需要,那将是执行 hack 的地方。
  • 是的,谢谢,这就是我的想法:(我会尝试一种新方法

标签: php codeigniter hmvc


【解决方案1】:

你可以这样做:

├── modules
    ├── module1 
    |   └── controllers
    |       └── Module1.php
    |     
    └── admin
        └── controllers
        |   └── Admin.php
        |   └── Submodule1.php
        |   └── Submodule2.php
        | 
        └── views
            └── subviews1

这样称呼他们

# Calling the main module (admin)
base_url('admin');
base_url('admin/index');
base_url('admin/somefunction');

# Calling a sub module
base_url('admin/submodule1');
base_url('admin/submodule1/index');
base_url('admin/submodule1/somefunction');

# Loading a view of a submodule
$this->load->view('submodule1/myview');

为避免名称冲突,请勿在主模块中使用子模块的名称作为函数名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多