2012-05-01 72 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