2012-05-01 4 views
1

У меня есть acl, который работает в MY_Controller. Если разрешение отклонено, то на данный момент я просто делаю redirect('denied') - это очень простой контроллер, который загружает очень простой вид, говорящий «Permission denied».Предотвращение выполнения контроллером

Однако, что бы я хотел сделать, все равно загружает первоначально запрошенный uri, но загружает представление «denied» вместо представления по умолчанию.

Я могу сделать это в MY_Controller, и отклоненный вид загружается отлично. Однако это не останавливает выполнение исходного контроллера/метода, поэтому я загружаю оба представления. Я также попытался поместить заявление exit; в MY_Controller после загрузки запрещенного представления, но это не работает, потому что тогда выход не запускается в CI.

Возможно ли это, используя крюк pre_constructor_controller? Я не мог понять, как предотвратить выполнение контроллера ...

ответ

7

Вы должны позволить контроллеру выполнить, чтобы разрешить загрузку URI.

После проверки ACL в MY_Controller, и если это не разрешено, вы можете загрузить вид denied, но перед тем, как выйти, вам нужно сделать еще одну вещь.

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

Отлично! $ this-> output -> _ display() - это то, что я искал. – JonoB

+0

Я рад, что это помогло :) – Broncha

Смежные вопросы