[英]To Nest or Not to Nest? MVC Controllers (CodeIgniter)
背景:
我在准確地了解如何最好地使用MVC架構中的控制器時遇到了一些麻煩。
我有一個遵循此URL方案的webapp:
/
-主索引 /static-page
靜態頁面 /categories
特定類別的索引 /categories/users
特定類別用戶的索引 /categories/users/id#/user-name
-特定類別的特定用戶 /categories/event-type-A
type-與特定類別相關的事件/categories/event-type-A
索引 /categories/event-type-A/id#/event-name
特定類別的特定事件 /categories/event-type-B
索引,用於與特定類別相關的事件 /categories/event-type-B/id#/event-name
特定類別的特定事件 *注意:此URL結構類似於StackOverflow的URL結構,如果存在id#
則會自動更正格式錯誤的URL(錯誤的event-name
)。
題:
由於categories
, users
和event-type
各自具有與之關聯的獨特功能(即,編輯用戶,操縱事件等),因此它們都是它們自己的控制者(對嗎?)。 而且由於event-type-A
和event-type-B
非常相似,因此它們共享從events
類擴展的通用功能。
您如何建議我組織控制器,使其遵循OOP和MVC設計中的“標准做法”?
我目前有一個用於靜態頁面的Pages
類,並且期望有一個categories
類調用users
類, event-type-A
和event-type-B
類(如上所述),它們是events
類的擴展...但是從這里我不確定如何最好地進行。
任何簡單/偽代碼示例將不勝感激。
附加信息:
僅供參考:我正在使用PHP / MySQL。 我一直在嘗試通過編寫自己的框架來學習MVC,但是最近切換到了CodeIgniter。 話雖如此,CodeIgniter專用解決方案或通用MVC解決方案都足夠。
更新:
正如下面的 Ako 所述 ,我絕對可以將events
組合到一個控制器中,然后從中生成兩個type
s。 我對如何實際設置每個控制器(定義哪些方法等)以使其正常工作感到困惑。
看來此答案提供了令人滿意的解決方案。
在本質上:
在需要時使用HMVC加載必要的MVC三合會。
我以前從未聽說過HMVC
,但是顯然,它可以讓我指定何時調用某些MVC三合會,這些三合會最終將使我能夠控制何時調用不同的Controller。 這將允許每個部分( categories
, events
, types
等)充當具有各自的index
頁(可以調用)的獨立模塊,但也可以根據需要提供處理更多詳細數據的功能。
如何將/categories/event-type-A
和/categories/event-type-B
更改為/categories/events/type
? type
可能是A
或B
(或類似的東西)之一?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.