一千萬個為什麽

搜索

CodeIgniter:特定功能應該去哪裏?

以下是大多數應用程序中控制器功能的快速概述:

  • 控制器加載特定模型,從中獲取數據,格式化數據並將格式化數據傳遞給視圖。

現在有一個搜索頁面,需要對整個數據庫(所有模型)進行搜索查詢。它需要在單個頁面上將其特定格式輸出中的每種類型的數據顯示為列表。

問題:

搜索控制器可以進行搜索,為每種記錄類型動態加載模型,並從模型中獲取數據。需要格式化數據時出現問題。我試圖從搜索控制器加載特定的控制器,這會導致問題。

該怎麽辦?

PS:我嘗試使用'Wick'庫,但是當控制器的格式化函數試圖使用自己的模型和會話對象時,它會失敗,從而給非對象上的成員調用提供錯誤。

最佳答案

經過大量的重構和試驗/錯誤後,看來實現上述目標的最佳方法是這樣的:

  1. 將格式功能保存在基本控制器中,從中導出所有其他控制器。格式選項與數據對象一起作為參數傳遞給函數。

  2. 在每個派生控制器中創建一個靜態函數,它返回數據的格式選項。

  3. 在搜索控制器(本身來自基本控制器)內,對於每個數據對象,調用其特定控制器的靜態函數,該函數返回數據格式化選項,然後使用它來格式化對象圖。

我想我可以說我會堅持只使用模型與數據庫交互,讓其他一切都由控制器完成。如果有人還有更好的解決方案,我會全力以赴。

轉載註明原文: CodeIgniter:特定功能應該去哪裏?