2011-05-26 31 views
1

我有一個「標準」的頁面佈局。控制器內部的控制器...也許我錯了

甲頁眉,頁腳,對左側的內容的主塊和在右手側的側欄。

現在,這一切都很好,除了側邊欄在每一個控制器複製,但需要一個控制器的功能。有時用戶可能已經登錄,因此會出現一些名稱不正確的情況。另外還有一個購物車,它將從MySQL數據庫運行。

我不想在每個控制器中複製此代碼。

我怎麼會讓一個控制器,將建立側邊欄,加載視圖和一切,然後我就可以「包括」(像我將包括一個視圖)到頁面中。

我可以預見一個sidebar類/對象,我可以實例化和「添加到視圖」,因爲它是的創建。

我該怎麼做?

謝謝

回答

0

我最終創建了一個庫,它做了我需要的東西。這很好。可以像簡單的控制器一樣有效地製作庫,並將它們包含在任何地方。 :)

0

聽起來Modular Extensions-HMVC可能是你一個很好的解決方案。我鏈接的wiki包含示例。

+0

看起來很有趣,謝謝。但不要告訴我,codeigniter沒有本地解決方案! :p它是那裏最着名的框架之一,它不能處理交叉控制器代碼? – 2011-05-26 18:50:16

+0

那麼,你可以創建一個MY_Controller來構建側邊欄,然後用其他控制器擴展它,但我認爲HMVC會是一個更好的解決方案。 – 2011-05-26 18:52:04

0

當我在過去,我已經建立了加載post_controller_constructor鉤有這個問題笨,執行一些邏輯,然後加載的sidebar.php視圖。這非常簡單,不需要太多的努力。

唯一的問題是,如果你沒有使用模板,那麼它可能會混淆你調用視圖的順序。例如,如果你已經習慣了:

public function index() 
{ 
    $this->load->view("header.php"); 
    $this->load->view("my_awesome_page.php", $this->data); 
    $this->load->view("footer.php"); 
} 

那麼你就必須改變它必須認識到,側邊欄將被稱爲最後一件事,並把頁腳在那裏。通常我會讓Hook檢查一個變量的CI對象,看看是否有需要的邊欄,然後如果不是隻是吐出footer.php。

我相當有信心,hooks是你在找什麼,但。