【问题标题】:Codeigniter HMVC and CMSCodeigniter HMVC 和 CMS
【发布时间】:2011-01-14 23:35:08
【问题描述】:

我正在使用带有 HMVC 模块化扩展的 Codeigniter,并且有一个用于管理网站内容的后端 CMS 区域。我将基本 URL + "admin" (http://localhost/cms/admin) 路由到前缀为 "admin_" 的控制器方法。

例如函数 admin_index() {...}

这是我的路线:

$route['admin/([a-zA-Z]+)/(:any)'] = "$1/admin_$2"; $route['^admin/(:any)(/)?'] = "$1/admin_index"; $route['^admin(/)?'] = "dashboard/admin_index"; $route['admin/logout'] = "login/admin_logout";

使用 HMVC,它现在无法正确路由。这是发生了什么:

网址:http://localhost/cms/admin/faqs 目录:modules/faqs/controllers/faqs - 索引方法 -- 这是它破裂的地方 -- 网址:http://localhost/cms/admin/faqs/categories 目录:modules/faqs/controllers/faqs - 分类方法(不退出) 所需:模块/常见问题/控制器/类别 - 索引方法

如何在维护网站“管理员”权限的同时使用 HMVC?

【问题讨论】:

  • 不要成为最聪明的孩子,但在一个地方(例如admin 控制器和admin/faq 函数)和其他地方的其他所有东西都不是更容易管理和路由吗?
  • HMVC 的目的是允许模块化结构,您可以在其中按原样拾取整个文件夹并将其放入另一个安装中,就像一个模块一样。您的目的与我正在尝试做的事情不符。不过谢谢你:)

标签: codeigniter routing hmvc


【解决方案1】:

将前端和后端功能放在同一个控制器中会让生活变得有点棘手。看看我在how to create an admin structure in CodeIgniter上的文章。

【讨论】:

  • 我以前看过这篇文章,但只是略过。乍一看,第三种选择可能是最好的解决方案。谢谢。
【解决方案2】:

我正在做类似的事情,并像你一样实现了交换(第三个选项)并且效果很好。

我尝试实现一个前端控制器来处理管理部分,并使用 HMVC modules::run() 运行模块并按照我的意愿缓冲输出,但后来我遇到了另一个问题,你将不得不更改 URI从 / 到 _ 或其他东西的方案,因为您无法将模块段作为参数发送到控制器,因为 CI 依赖于“/”作为其路由机制。

唯一的方法是按照 Phil 的建议模拟管理部分,但还有另一个选项可以控制任何使用您的 CMS 实现的代码。

您可以扩展 CI_Controller(或 MX_Controller,以防您使用 HMVC)并添加一个 Admin_Controller 来处理您的逻辑并控制模块可以做什么。

看看这个CodeIgniter Base Classes: Keeping it DRY

【讨论】:

    猜你喜欢
    • 2011-10-10
    • 1970-01-01
    • 2013-06-08
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多