2011-08-19 136 views
1

我對CakePHP有一個關於它的體系結構的問題。蛋糕php架構

我有一個應用程序,這將只有兩個型號(產品和類別)。

我必須製作一個在線產品瀏覽器。對我來說,讓一個控制器「產品」和一個控制器「類別」沒有任何意義,因爲我將在產品上執行20多個操作,而在類別上沒有任何操作。

我有幾個關鍵functionnalities,我可以爲每個functionnalities的一個控制器?例如一個控制器「搜索」,其具有「搜索結果」,「高級搜索」,「基本搜索」的動作。

我們將在這個項目上的幾個開發商,我不希望我們一直都阻止,因爲一個是做一些編輯產品的控制器上(我真的不喜歡文件,1000個+行代碼)。

第二個問題:什麼是我應該用在幾個不同的子視圖片段鑑於mecanism? 例如爲了查看一個產品的細節,我需要展示很多東西:圖片部分,說明部分,類似產品,評論......是否有可能有子部分?

非常感謝您

回答

5

對於「子視圖」查看元素,就是這樣。它們是可以包含在其他視圖中的視圖代碼片段。元素的正確結構可以創建一些非常優雅的視圖/子視圖關係。 http://book.cakephp.org/view/1081/Elements

至於你的控制器問題,這也是我一直在努力解決的問題。從我所看到的情況來看,這聽起來像是你錯誤地分類了你的行爲。想想你正在做的動作的替代分類法(將所有搜索功能混合到一個控制器中就是一個很好的例子)。

也許你應該想想控制器作爲分類的各種行動,而不是在其上的各種動作可以執行(因爲它似乎你正在做的)你的網站的各個方面的對象。因此,您可能沒有可以搜索,列出,購買等的CATEGORY控制器,產品控制器(可以按照聚合 - 也可以按類別 - 或單獨處理查看您的產品),也可以是用戶控制器爲您的用戶帳戶?沒有查看您的應用程序細節很難說。搜索將是動作,這將在您的產品上執行。

有一兩件事,我已經在做基於頁是撿我的控制器的錯誤,我將不得不而非車型。考慮你的數據(模型)以及可以對它們執行的操作(控制器中的操作),然後考慮你的觀點。

我希望我能給你更具體的幫助,但不知道你的應用程序的具體需求,我只能給你如何打破你的控制器的指導。看看這個問題:

CakePHP - file structure confusion - different controllers, or all in same?

有關該主題的更多討論。

希望有幫助!

+0

好吧,非常適合 要素」。 問題是,在這個應用程序,我只需要顯示/搜索/查看詳細信息/查看相關產品/ ...在「產品」模型上的行動,事情是,它將使一個巨大的文件與80%我的代碼,我不認爲這是一個好主意。 – J4N

+0

還有一件事,我有三張包含相同信息,但語言不同的表格,我如何才能只做一個控制器,並根據語言切換表格? – J4N

+0

這應該是一個不同的SO問題,這樣每個人都可以受益,但我的想法是創建一個模型,根據路由邏輯(檢查前綴和$ useTable屬性)切換其基礎表,或者 - 如果每個表都複雜或不同足以讓某些點的不同數據查看使用$ uses屬性在控制器中交換模型。儘管... – matthewdunnam

1

,如果您有沒有與之相關的方法/措施您不需要分類控制器。我假設你可能需要一個管理員CRUD來管理你的類別?

關於搜索;您的核心搜索功能應該駐留在Products模型中,各種控制器調用適當的方法。在大多數情況下,對一個模型進行基本搜索或高級搜索可以通過一種方法進行處理,它只能確保更多搜索字段的問題?

如果您有幾個開發人員並擔心同一個文件存在衝突,那麼您確實需要考慮版本控制,如GITSVN,而不是與MVC框架核心方法相反的方法。這會在未來造成更少的問題。

我相信你的問題關於「子視圖」是通過使用elements,這是在視圖效果可重複使用的部分解決。

好運

+0

我知道我不需要類別控制器,也不需要任何管理員部分,我們連接在一個ERP視圖上。 – J4N

+0

搜索功能真的比在所有字段中搜索輸入真的更加複雜和智能,我們必須交互輸入(例如,如果我們看到一個150毫升,我們必須將其轉換爲0.150,並將其搜索到卷列,並且我們有>,<, <=, > =運營商,例如葡萄酒<2000必須只返回11年以上的葡萄酒(虛擬示例),並且所有這些標準都可以累計 我們已經有了代碼版本控制(TFS)。它並沒有真正告訴我是否必須將整個網站的所有邏輯放在一個文件中,這會產生一個巨大的文件,我們無法輕鬆找到任何東西 – J4N

+0

而源代碼管理有助於合併文件,它不會避免有人必須改變一種方法的功能,另一種方法也是如此,並且他們改變了兩種方法... – J4N