Столкнулся с необычным поведением CI при кастомизации 404й ошибки :(
Исользую простую библиотеку-шаблонизатор:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Template {
var $template_data = array();
function set($name, $value)
{
$this->template_data[$name] = $value;
}
function load($template = '', $view = '' , $view_data = array(), $return = FALSE)
{
$this->CI =& get_instance();
$this->set('contents', $this->CI->load->view($view, $view_data, TRUE));
return $this->CI->load->view($template, $this->template_data, $return);
}
}
/* End of file Template.php */
/* Location: ./system/application/libraries/Template.php */
Хотел поменять 404-ю ошибку, создал контроллер error404.php класс Error404,
в методе index() вызываю view error404:
$this->template->load('template', 'error404');
В routes.php добавил:
$route['404_override'] = 'error404';
Если обратиться к несуществующей стрнанице вроде site.ru/asdasdasdgfg, то все верно отображается, если же обратиться к скажем site.ru/login/asdasdasdasd, где login — контроллер,
то выпадает ошибка
Message: Undefined property: Error404::$template
Filename: controllers/error404.php
Экспериментальным путем выяснил, что во втором случае $this не содержит ни template, ни остальных библиотек, которые прописаны в autoload.php. Подгружать их руками в методе index() — аналогично, в print_r($this) их нет. Так же, как и в:
$CI =& get_instance();
print_r($CI);
Может ли кто нибуть подсказать — как так контроллер, в данном случае, login, влиет на контроллер error404? Никаких необычных манипуляций в login нет, просто вывод страниц.