2012-08-27 63 views
1

我正在使用Codeigniter:我有兩個控制器。他們使用不同的模型。他們沒有共同之處。如果我的登錄憑證是正確的,控制器1是一個登錄控制器,它將我引導到一個安全頁面。我只想控制器2:只加載此頁面的中間部分,就是這樣。爲什麼與CI做這件事很難?使用多個控制器加載視圖

+-------------------------------------------------------+ 
|View "Home_Page"          | 
+-------------------------------------------------------- 
| TOP:             | 
|Controller 1: function checklogin(){} loads this part | 
|              | 
--------------------------------------------------------+ 
|Middle:            |         
|Controller 2: function content(){ } loads this part | 
|              | 
--------------------------------------------------------+ 
|Bottom:            |         
|Controller 1: function checklogin(){} loads this part | 
|              | 
--------------------------------------------------------+ 
+0

因爲CodeIgniter框架沒有實現MVC,也沒有實現MVC設計模式。你實際上擁有的是一個用於原型設計的框架。 –

回答

2

回答你的問題。

因爲CI沒有開發來做這種事情嗎?

那些不是MVC的東西?控制器不調用控制器,模型不調用控制器,視圖不控制器,控制器調用他們希望的所有東西,只有調用控制器的東西是路由。

如果您想獲得類似功能,請閱讀HMVC/Modular separation

無論如何,這是不好的做法,考慮將您的代碼重構爲MVC,並停止嘗試讓CodeIgniter做它不應該做的事情。

Things to read about MVC and what models are for.

控制器1

public function index() { 
    $this->load->view("header"); 
    $this->load->view("top"); 
    $this->load->view("middle"); 
    $this->load->view("bottom"); 
} 

控制器2

public function index() { 
    $this->load->view("header"); 
    $this->load->view("middle"); 
} 
+0

但我沒有試圖調用控制器內的控制器,我試圖用兩個控制器加載一個視圖。 – AnalogJake

+0

你爲什麼要這麼做?製作三個視圖並根據需要調用它們,甚至可以(儘管不應該)從視圖文件中調用視圖。如果你想調用一個視圖,但顯示它的不同部分,然後通過一些切換,並在視圖中執行'if/else'。 –

+0

那麼等待它實際上是一個更好的做法,只有一個控制器的多項功能的項目? – AnalogJake

0

我認爲你需要的母版頁,

參考this

0

有幾個auth庫工作得很好,他們不以這種方式運作。

通常在CI的流動是:

Request -> Front Controller 
-> Route 
-> Controller 
[-> Auth Library 
    [-> Auth Model] 
] 
-> Display View 

支架在那裏表示可選組件。

控制器將在您的控制器中運行認證代碼(無論是庫還是其他方法),然後根據結果顯示視圖或重定向用戶。

我個人使用Tank Auth,但還有很多其他的可以用作認證庫。

相關問題