阻止控制器执行

时间:2012-05-01 14:15:49

标签: php codeigniter

我有一个在MY_Controller中运行的acl。如果权限被拒绝,那么此刻,我只是做redirect('denied') - 这是一个非常基本的控制器,它会加载一个非常基本的视图,说“权限被拒绝”。

但是,我想要做的仍然是加载最初请求的uri,但加载“拒绝”视图而不是默认视图。

我可以在MY_Controller中执行此操作,并且被拒绝的视图加载正常。但是,这并不会阻止原始控制器/方法执行,因此我会加载两个视图。我还尝试在加载拒绝视图后在MY_Controller中添加exit;语句,但这不可行,因为输出不会在CI中触发。

是否可以通过pre_constructor_controller挂钩执行此操作?我无法找到阻止控制器执行的方法......

1 个答案:

答案 0 :(得分:9)

您必须让控制器执行才能让所请求的URI加载。

MY_Controller中检查ACL后,如果不允许,您可以在那里加载denied视图,但在退出之前还需要做一件事。

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