2012-05-01 42 views
0

背景:巢或不巢? MVC控制器(笨)

我有一些麻煩究竟瞭解如何在MVC架構充分利用控制器。

我有如下這個URL方案的Web應用程序:

  • / - 主要指標
  • /static-page - 靜態頁面
  • /categories - 指數爲特定類別
  • /categories/users - 指數的特定用戶類別
  • /categories/users/id#/user-name - 特定類別的特定用戶
  • /categories/event-type-A指數與特定類別相關
  • /categories/event-type-A/id#/event-name事件 - 爲特定類別

*注特定事件 - 爲特定類別

  • /categories/event-type-B指數與特定類別相關
  • /categories/event-type-B/id#/event-name事件的特定事件:如果id#存在,則此URL結構與StackOverflow類似,格式不正確的URL(錯誤的event-name)會自動更正。

    問:

    由於categoriesusersevent-type s各自具有與其相關的獨特的功能(即編輯的用戶,操縱事件等),它們是所有contollers自己(?右) 。由於event-type-Aevent-type-B非常相似,因此它們具有從events類擴展的通用功能。

    你如何建議我組織我的控制器,以便他們遵循OOP和MVC設計中的「標準實踐」?

    我現在有一個Pages類爲我的靜態頁面,並且我期待有一個categories類調​​用users類,event-type-Aevent-type-B類,(如上所述)是一個events類的擴展......但從這裏我不確定如何繼續下去。

    任何簡單/僞代碼的例子將不勝感激。

    附加信息:

    FYI:我使用PHP/MySQL的。我一直在努力通過編寫自己的框架來學習MVC,但最近轉向了CodeIgniter。話雖如此,無論是CodeIgniter特定的解決方案或一般的MVC解決方案就足夠了。

    更新:

    由於Akomentioned below,我可以絕對有events合併成一個單一的控制器,然後有兩個type期從該產卵。我只是混淆了我如何實際設置每個控制器(要定義哪些方法等)以使它們正確地一起工作。

  • 回答

    1

    看起來像this answer提供了一個令人滿意的解決方案。

    本質:

    使用HMVC需要時加載必要MVC三單元組。

    我從來沒有聽說過HMVC之前,但顯然它可以讓我指定當某些MVC黑社會被稱作這將最終給我當不同的控制器也叫了過來控制。這將允許每個部分(categorieseventstypes等)充當獨立模塊,它們可以調用自己的index頁面,但也可以根據需要提供更精細的數據。

    0

    如何將/categories/event-type-A/categories/event-type-B更改爲/categories/events/type?其中type可能是AB(或類似的東西)之一?

    +0

    簡單的首選項。很多'event-type-A'和'event-type-B'的代碼都可以重用,但不是全部。因此,我不希望他們被列爲「事件」的子女,我寧願讓他們分開(主要是爲了SEO目的)。感謝您的建議,儘管......除非有一種簡單的方法來實現這一點,同時隱藏路徑中的'events'目錄。 – ServAce85

    +1

    讓我們假設我繼續並按照你的建議來創建匹配方案'/ categories/events/type/id#/ event-name'的控制器,我將如何定義我的控制器以使其工作?我想你有'categories','events','types'的控制器,但是如問題所述,我不明白如何正確設置方法來完成這個工作。你能指導我完成整個過程嗎? – ServAce85