2010-04-14 22 views
2

我一直在尋找這個問題的解決方案,但還沒有看到任何「有效的mvc」解決方案。 我希望我能爲你們清楚地解釋我的問題。CodeIgniter - 在網頁上創建「塊」元素的正確方法

  • 我需要在我的網站上創建HTML的動態塊。 (例如,包含用戶最新博客評論的區塊)。

  • 我有一個模板視圖文件(一個文件包含標題,內容容器和頁腳),我需要添加一些內容和這個塊元素。

問題是我不想在每個控制器上覆制這個塊代碼。它只是覺得很愚蠢,我敢肯定有一種更好的方法可以做到這一點,而不是僅僅在所有控制器文件上重複相同的東西?

我可以在另一個視圖中添加視圖就好了,但是我錯誤的是如何實際生成該塊的視圖文件的動態內容。 我不能從視圖文件,控制器從控制器filem或模型從視圖文件中調用控制器,因爲我知道這只是不是「mvc」方式?

任何人有任何技巧或技巧呢?

回答

1

我遇到了同樣的問題。我不想在我的操作方法中複製這種通用邏輯。我將這個邏輯提升到基本控制器,但感覺有點笨拙。

我最終偶然發現了CodeIgniter的HMVC擴展。它是生成部分視圖的一種非常好的方式。您創建一個負責生成部分的模塊。模塊以MVC方式編碼,就像編碼頁面一樣。這個模塊可以包含在你的視圖中。

如果您之前使用過ASP.NET MVC,則其類似於使用Html.RenderAction

+0

這可能正是我一直在尋找的東西!太感謝了! – kikkoman90 2010-04-15 05:36:33

1

如果您有多個控制器將繪製這些數據,您可以使用模型或使用MY_Controller擴展Controller類。這在CodeIgniter用戶指南中有很好的說明。

如果它僅僅是在同一個控制器很多方法,你可以把邏輯的控制器構造

重新閱讀您的文章之後,我想爲你做的最好的事情是延長CodeIgniter的Controller類與MY_Controller documented here.

+0

好的,非常感謝!我會檢查一個! – kikkoman90 2010-04-14 20:26:14

2

正如Zack指出的,MY_Controller非常適合創建全局數據。

我這樣做的一種方式是創建「部分」視圖,它只是一個視圖,包含它需要的一切。有時候這只是PHP的一小部分,但對於這些特殊的視圖,我不介意讓它們變髒。

另一種方法是將輔助函數與視圖配對。把你所有的PHP則(捲曲請求獲取RSS,緩存等)的輔助功能:

$this->load->view('partials/rss_feed'); 

最好的辦法是落實Widgets system from PyroCMS。那件事真棒! :D

+0

使用partials + helpers非常適合rails-y。 不是說這有什麼問題。我也使用它。 – Zack 2010-04-15 16:23:42

+0

我在CI應用程序中使用這樣的偏好,它的功能非常出色。我添加了自己的自定義基本控制器,它添加了我用於各種事情的部分集合,如xml_view,json_view,page_view,doc_view等。 – 2010-04-18 17:33:48

相關問題