2011-12-25 116 views
0

目前,我爲我的web應用程序使用CodeIgniter框架,並且在我的應用程序設計中遇到了一個棘手的問題,我想知道什麼是解決問題的好方法。MVC通用功能

我有3個不同的對象(控制器),可以有評論。我很好奇,因爲它是所有這3個對象的通用功能(閱讀評論,撰寫評論等)。所以我的問題是:它應該如何設計? (何處放置所有常用控制器方法以及如何處理模型方法)。什麼是正確的MVC方法呢?如何保持乾爽?

+0

這是我不喜歡關於將每個控制器視爲頁面的框架。當你需要在許多頁面上擁有類似的功能時,你必須將它們全部放在基本控制器(它可能會變得非常臃腫)或複製代碼。我相信有一個模塊化設計,其中頁面的每個部分都有自己的控制器是一個更好的方法。 – powerbuoy 2011-12-25 01:00:28

+0

你不需要把它全部粘在基礎控制器中。使用圖書館,幫手或火花。在CodeIgniter中有六個選項可以處理這個問題。 – 2011-12-25 01:12:10

回答

1

我想你已經閱讀過菲爾的博客文章,然後=)。

如果您想在其他控制器之間共享邏輯,您可能只需創建一個註釋庫,一個註釋模型並將其加載到其他每個類中。

Codeigniter Libraries

至於你的數據庫中,如果你想存儲所有的意見在一個地方,你也許可以做這樣的事情:

COMMENT_ID COMMENT_TEXT comment_relation comment_relationId

.. 。關係和關係id將引用另一個表和一些特定的內容。

我認爲這將是一個很好的方法。

+0

:)謝謝!我想我會堅持圖書館。 – Dmitri 2011-12-25 10:33:37

2

使3控制器從基本控制器繼承與這些方法將完成這項工作。 也有一個CommentController,取決於用例,會。

希望它有幫助。

+0

擁有一個基礎控制器可能不是正確的方法。如果某些評論功能位於銷售網站中,那麼其他評論是否在應用程序中呢?在MY_Controller中進行註釋處理沒有任何意義。僅僅用於評論的控制器也是沒有意義的,因爲控制器根據定義(在CodeIgniter中)是用戶可以訪問的端點。 – 2011-12-25 00:59:56

+0

您可以使用模板方法來區別差異。如果你的每個評論相關行爲都是不同的,那麼唯一想要避免重複的是方法的名稱,這是沒有意義的。所以我想所有的方法都是相似的。 – ivowiblo 2011-12-25 01:09:32

+0

另一種選擇是讓你的三個控制器有一個處理「通用」邏輯的類的引用。 – ivowiblo 2011-12-25 01:10:23

1

您可以有一個FrontController並將您的常用功能放在FrontController中,並讓其他控制器擴展此FrontController。我認爲這將有助於某種方式。