2010-02-09 80 views
0

我使用的是帶有HMVC模塊擴展名的Codeigniter,並具有用於管理網站內容的後端CMS區域。我將基本URL +「admin」(http://localhost/cms/admin)路由到具有前綴「admin_」的控制器方法。Codeigniter HMVC和CMS

 
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,同時保持「管理員」是網站?

+0

爲了不被周圍最聰明的孩子,但不會是更容易管理和具有管理路徑在一個地方(例如'在admin'控制器和'管理員/ faq'功能它)和其他地方的一切? – 2010-02-09 20:01:26

+0

HMVC的目的是爲了允許一個模塊化的結構,在那裏你可以直接拾取整個文件夾並將它像模塊一樣放入另一個安裝中。你的目的不符合我想要做的。謝謝,雖然:) – Torez 2010-02-09 20:12:02

回答

2

通過將前端和後端功能放在同一個控制器中,使生活變得有些棘手。看看我的文章how to create an admin structure in CodeIgniter

+0

我以前看過這篇文章,但只是略過它。乍一看,第三種選擇可能是最好的解決方案。 謝謝。 – Torez 2010-02-10 15:21:55

0

我正在做類似的事情,並且像你一樣實施了一個交換(第三選項),它工作正常。

我試圖實現一個前端控制器來處理管理部分,並運行模塊與HMVC模塊:: run()並緩衝輸出,如我所願,但後來我遇到了另一個問題,你將不得不改變來自/ to _或其他的URI方案,因爲你無法將模塊段作爲參數發送到你的控制器,因爲CI依賴於「/」作爲它的路由機制。

唯一的辦法是按照Phil的建議模擬管理部分,但還有另一個選項仍然可以控制任何使用CMS的人執行的代碼。

您可以擴展CI_Controller(或MX_Controller,以防您正在使用HMVC)並添加一個Admin_Controller來處理您的邏輯並控制可以執行的模塊。

看一看這個CodeIgniter Base Classes: Keeping it DRY