Codeigniter, 404 в контроллере?

Столкнулся с необычным поведением 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 нет, просто вывод страниц.
  • Вопрос задан
  • 4985 просмотров
Пригласить эксперта
Ответы на вопрос 1
mrspd
@mrspd
В error404 контролере в конструкторе вызвали конструктор родительского класса-то? parent::__construct()?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы