Мне нужно загрузить представление головы и вид стопы на всех моих страницах. Но show_error
использует свой собственный полный шаблон. И он прекращает выполнение после загрузки этого шаблона, поэтому нижний колонтитул даже не загружается, если я захочу.
Должен ли я переопределить этот метод или есть другой способ?
Вы можете создать собственный макет для сообщений об ошибках в каталоге application/errors
.
РЕДАКТИРОВАТЬ:
Если вы хотите использовать существующие файлы, вы можете выполнить одно из следующих действий:
config/route.php
в $route['404_override']
. CI_Exceptions
класс CI_Exceptions
с помощью MY_Exceptions
и используя простой PHP, перенаправьте пользователя на соответствующую страницу. Класс исключений загружается перед контроллером, поэтому вы не можете использовать get_instance()
. Итак, так я это сделал, и он отлично работал. Я расширил возможности CI_Exceptions
предложенные Яном Берком, но я смог использовать get_instance
AND load my view.
class MY_Exceptions extends CI_Exceptions { private $CI; private $dist; public function __construct() { parent::__construct(); $this->CI =& get_instance(); $this->dist = $this->CI->config->item('dist'); } function show_error($heading, $message, $template = 'error_general', $status_code = 500) { $head_data = array("title"=>$this->dist['site_title'].": Error"); $head = $this->CI->load->view('head', $head_data, TRUE); $body = $this->CI->load->view('error_body', $message, TRUE); echo $head; echo $body; } }