2012-05-01 93 views
1

我有一個在MY_Controller中運行的acl。如果權限被拒絕,那麼目前,我只是做一個redirect('denied') - 這是一個非常基本的控制器,加載了一個非常基本的視圖,說'權限被拒絕'。阻止控制器執行

但是,我想要做的是,仍然加載最初請求的uri,但加載'denied'視圖而不是默認視圖。

我可以在MY_Controller中做到這一點,並拒絕視圖加載罰款。但是,這並不能阻止原始控制器/方法的執行,所以我同時加載了這兩個視圖。我也嘗試在加載拒絕視圖後在MY_Controller中放入exit;語句,但這不可行,因爲輸出在CI中不會觸發。

是否有可能通過pre_constructor_controller鉤子做到這一點?我找不到一種方法來阻止控制器執行...

回答

7

您必須讓控制器執行以便加載請求的URI。

在您檢查MY_Controller中的ACL後,如果不允許,您可以在那裏加載denied視圖,但在退出之前還需要做一件事。

$this->load->view('denied'); 
$this->output->_display(); 
exit(); 
+1

完美! $ this-> output - > _ display()就是我正在尋找的東西。 – JonoB

+0

我很高興它幫助:) – Broncha