2011-05-20 50 views
0

那麼,我一直在想很多關於我編碼的第一個真正的CodeIgniter網站。我想以這樣一種方式模塊化網站,即我有一個控制器來格式化導航欄,一個格式化多用途右列,另一個格式化內容區域。如何模塊化Code​​Igniter?

我的想法是對網站任何部分的每個狀態都有一個控制器(一個例子是右欄,它會有3個狀態;新帖子,相關帖子和搜索過濾器)。我也會將內容區域設置爲許多不同的狀態(例如搜索結果,查看帖子,新帖子等)。

問題是,我無法找到一種方法來獲取多個控制器輸出並將其編譯成單個模板(注意,我說的是控制器,而不是視圖)。

我已經看到了HMVC的擴展,但是對於我的第一個網站來說,這是遠遠不夠的,我希望有一個更簡單的解決方案(除非你能證明我錯了,並表明HMVC比我見過的更容易)。

+0

CI中的模塊 - >使用http://codeigniter.com/wiki/Matchbox/ – Jason 2011-05-20 03:16:25

回答

1

在MVC模型中,這對我來說似乎有些不可思議。

如果您的右側面板使用單個有狀態視圖,可能會根據輸入(即用戶當前所在的頁面)更改狀態,那麼我會爲該面板添加一個模型。控制器的操作將負責設置正確的模型狀態(即「您處於主頁狀態」)。模型可以負責告訴右面板查看加載哪些子視圖。

這就是我可能會實現類似的東西。 HMVC似乎矯枉過正,並且在這個例子中,不會按照預期使用。

+0

我認爲模型只用於數據,而控制器是用於設置視圖?或者你是否將數據傳遞給控制器​​,並讓控制器響應使用哪個子狀態? – Ben 2011-05-20 02:57:51

+0

如何加載*不*數據的控件? :)控制器將狀態信息傳遞給模型(基於任何參數),然後加載子視圖。該視圖(在本例中是右側面板)將查詢模型以檢查要加載的子視圖。或者,控制器可以直接從模型中檢索數據並將其傳遞到視圖中。 – 2011-05-20 03:01:06

+0

再次,使用MVC的第一個網站,仍然學習很多。而你呢,應該有一個餅乾。這使得現在更有意義;)。 – Ben 2011-05-20 03:02:44

1

對於你想要完成的評論中提出的火柴盒模塊似乎有點矯枉過正。我不認爲使用控制器來格式化這些區域是非常好的方法。

通常情況下,您希望使用CodeIgniter工作時所描述的功能類型最終使用模板庫的用戶。 CodeIgniter有幾個開源模板庫,可以通過谷歌搜索「codeigniter模板庫」輕鬆找到。

我從來沒有使用過它們,所以我不會推薦任何特定的庫。然而,我正在從事的應用程序借鑑了Phil Sturgeon's template library的一些想法。您可能無法找到與您需要的功能完全匹配的內容,但至少您可以從其他人提出的解決方案中獲得靈感。