2011-05-06 109 views
0

到目前爲止,我爲每個頁面的方法創建了一個站點部分的控制器 - 大多數是靜態頁面,不需要太多的邏輯或模型。代碼點火器:放入單獨的控制器或一個?

但是,其中一些頁面功能複雜,需要自己的模型,我是否需要將它們分解到自己的控制器中?或者是否有辦法讓他們保持在一個控制器中,並按照每種方法加載模型......可能是錯誤的做法

回答

3

完全同意jondavidjohn's answer。我建議現在就做適合你的工作,不要擔心太多的開銷或做「正確」的事情。你很快就會意識到你需要做什麼以及如何組織,並且開銷很大 - Codeigniter非常精簡,不必擔心在這一點上進行優化 - 只需讓所有事情按照你想要的方式工作即可。

把你的第一個Codeigniter項目,並儘可能做到最好,但只是認爲它是一個丟棄的應用程序。每次你使用它時,你都會學到更多關於如何使用它的知識,特別是如果你繼續閱讀和提問。

要回答你的字面問題:不,每種方法加載模型沒有任何問題。事實上,它可以比控制器的__construct中的加載「更好」,因爲它可以確保只加載所需的內容。所以不要擔心。

到目前爲止,我創建爲每個頁面的方法的網站部分一個控制器 - 大部分是靜態網頁

有沒有錯的,但爲了方便起見,你可以使用同樣的方法爲你的每個靜態頁面,並保持你的網址相同。事情是這樣的:

class Pages extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    function index($page) 
    { 
     $this->load->view("pages/$page"); 
    } 

} 

// config/routes.php 
$route['page/(:any)'] = 'pages/index/$1'; 

這將網址/page/my_first_page映射到頁面控制器並調用index()與參數my_first_page。然後,您可以在沒有動態數據的情況下將其用於所有靜態頁面。您可以進一步深入研究,但這是您可以選擇避免爲每個靜態頁面編寫新方法的一個選項示例。

0

您可以按每種方法加載模型。這樣做不是不好的做法。

$this->load->model('your_model'); 

模型通常不是太密集的加載。除非您嘗試保存單一咬合,否則您不應該過多擔心加載模型。

3

由於Codeigniter是非常傳統的,它確實會導致類似的問題。

雖然在一般我會永遠提醒,更模塊化少模塊化更好,你永遠無法過組織

只因爲有些東西不是「」錯誤「不會讓它最好

只有你可以在最後決定,因爲你將是一個維護它。

+0

「你永遠不能過度組織」必須記住! – 2015-08-12 16:52:40

0

它很好地爲每個頁面使用特定的控制器,以便應用程序變得輕量化,並且還需要創建它的模型。因此,應用程序擴展其功能變得容易開發:

 class Location extends CI_Controller { 
public function __construct() 
{ 
parent::__construct(); 
$this->load->library('session'); 
    } 
public function index() 
{ 
$data['title'] = "Hello world"; 
$this->load->view('locale_view', $data);   
} 
    }