【问题标题】:How to Extend Controller Class in HMVC Module in Codeigniter to allow for Routing如何在 Codeigniter 的 HMVC 模块中扩展控制器类以允许路由
【发布时间】:2012-05-21 02:26:51
【问题描述】:

问题:

如何扩展 HMVC 模块的控制器,然后在 Codeigniter 的 URI 路由器中调用该扩展类?

详情:

假设与 HMVC 相关的典型 Codeigniter 文件结构如下:

/
/application
/application/modules
/application/modules/module-name
/application/modules/module-name/controllers
/application/modules/module-name/controllers/controller-name.php
/application/modules/module-name/models
/application/modules/module-name/models/model-name.php
/application/modules/module-name/views
/application/modules/module-name/views/view-name.php
/application/config
/application/config/routes.php

我有一个类Events 存储在/application/modules/events/controllers/events.php 中。我想将它扩展到CoursesConferences,这将为这些各自的控制器提供特定的功能。我想将这些控制器存储在同一个模块文件夹中(即/applications/modules/events/controllers/courses.php 等)我想将访问http://www.example.com/courses 的用户路由到courses 控制器,如下所示:

$route['courses'] = 'courses/getList';

我还想将访问http://www.example.com/conferences 的用户路由到conferences 控制器,如下所示:

$route['conferences'] = 'conferences/getList';

问题:

不幸的是,我似乎无法让它工作,因为课程不包含在它自己的模块中,因此路由器无法找到。路由器似乎正在以下文件路径中寻找course 类文件:/applications/modules/courses/controllers/courses.php。我已尝试将该文件移动到上述路径,但随后我被要求提供 Courses 扩展自的 Events 控制器类的位置。

一个可能的解决方案:

一种可能的解决方案是将每个控制器包含在单个控制器文件中。但是,我不希望这样做,因为我喜欢将每个类存储在它自己的单独文件中,并尽可能与它的扩展类进行分组。我正在寻找一个更优雅且完全正确的解决方案。即使我尝试对单个文件进行这种技术,它也需要包含在/applications/modules/courses/controllers/courses.php 中才能被访问。这让我在稍后尝试路由到 conferences 控制器时不走运。

【问题讨论】:

  • 您标题中的问题与帖子正文中的问题不太匹配。您的问题是扩展 PHP 类(控制器)还是路由?带有$route['courses'] 的 routes.php 文件在您的模块目录或 app/config 中的什么位置?你的文件结构是什么样的?很难想象你的问题,我不确定这个“事件”类与任何东西有什么关系。你是什​​么意思“这让我失去了会议控制器的运气。”?
  • @WesleyMurch 感谢您的意见。我更新了标题和问题,以更好地解释我遇到的问题。

标签: php model-view-controller codeigniter routing hmvc


【解决方案1】:

好像是通过添加

require APPPATH."modules/events/controllers/events.php";

在我的扩展课程(coursesconferences)开始时,我将能够单独离开 Events 模块。

不幸的是,我必须为 coursesconferences 控制器创建单独的模块。哦,好吧,我想它不可能是完美的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多