2011-07-01 152 views
8

我使用Zend框架和學說在此應用程序MVC設計問題

在我的web應用程序我有這樣的活動,會議,案例分析各種單獨的模塊..所以我在這一刻讓控制器的設計。在下面的圖像管理文件是控制器及其子是它的行爲。所以監管文檔,視頻,播客都具有幾乎相同的功能。那麼這個設計是否合適? 在每個動作的mvc中,我將擁有一個單獨的視圖。而在用戶類型上,我可能不得不將訪問級別放在這些模塊上。所以我保持單獨的控制器,以便我可以輕鬆地控制每個用戶類型的模塊。但是這會導致重複的代碼。

enter image description here

現在我想做出一個父類和我將所有的常用方法。例如。我將擁有普通的班級資源,並且我將保留列表,搜索,建議,添加,收藏等。這將成爲上述給定控制器的父項。

因此,如果我採用這種方法,我將如何管理所有這些不同模塊的視圖..?如果我用這個比我的代碼會有點凌亂..?

+1

你可以舉一個「雜亂」代碼的例子嗎?你能更具體地說明你擔心的是什麼嗎? –

回答

0

如果我正確地理解了你,你在監管文件,視頻和播客之間有一系列共同行爲。

在這種情況下,您應該嘗試將共同點抽象爲從這三個區域繼承的父類。

作爲一個例子,我有我自己的MVC框架,我定義了一個超類tnh_controller,我的其他控制器(例如:venue_controller,group_controller)從其繼承。在父控制器中,我定義了header()和footer()和delete()方法。然後,我可以使用那些在孩子班級中保持不變的東西,並省下一些努力。

您也可以在模型超類中爲您的模型(CRUD)執行一些常見工作,只需根據需要覆蓋它即可。大多數不同模型的邏輯來自類變量(表名,列名等)。

我不會過分擔心「嚴格」的MVC。相反,試着弄清楚什麼會節省你的時間,並保持你的代碼組織。這聽起來像是你在正確的軌道上將類似的行爲放在父母層面。

0

MVC設計意味着對於每個視圖,您都有一個控制器和一個模型。但是,模型根本不需要是類,也不需要爲每個MVC創建不同的模型。通常你會在一些MVC之間共享一個模型,或者你的模型可能只是你在自己的控制器中定義的整數值。通常情況下,你甚至可能要共享它們之間的數據,那麼你將有一個單例模式:

http://www.galloway.me.uk/tutorials/singleton-classes/

0

你仍然可以有一個單獨的控制器包含建議,爲收藏的行動,而不必讓它的父類爲所有的控制器。基本上,與這些相關的UI元素可以渲染爲部分視圖並調用相關控制器中的操作。這樣你可以擺脫視圖的問題。