Codeigniter HMVC和CMS

时间:2010-02-09 19:55:22

标签: codeigniter routing hmvc

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

e.g. function 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时,它现在无法正确路由。以下是发生的事情:

URL: http://localhost/cms/admin/faqs
Directory: modules/faqs/controllers/faqs - index method
--
here is where it breaks
--
URL: http://localhost/cms/admin/faqs/categories
Directory: modules/faqs/controllers/faqs - categories method (does not exits)
Desired: modules/faqs/controllers/categories - index method

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

2 个答案:

答案 0 :(得分:2)

通过将前端和后端功能放在同一控制器中,您的生活有点过于棘手。请查看我在how to create an admin structure in CodeIgniter上的文章。

答案 1 :(得分:0)

我正在研究类似的东西,并像你一样实施了交换(第三种选择)并且工作正常。

我试图实现一个前端控制器来处理admin部分,并运行带有HMVC模块的模​​块:: run()并按我的意愿缓冲输出,但是我遇到了另一个问题,你将不得不更改URI从/到_或其他方案的方案,因为你不能将模块段作为参数发送到你的控制器,因为CI依赖于它的路由机制的“/”。

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

您可以扩展CI_Controller(或MX_Controller,以防您使用HMVC)并添加一个Admin_Controller,它将处理您的逻辑并控制哪些模块可以执行。

看看这个CodeIgniter Base Classes: Keeping it DRY