2011-07-20 16 views
5

Rozszerzyłem kontroler CodeIgniter, dodając MY_Controller.php w folderze Application/Core. Działa dobrze, ale teraz, gdy dodaję następujący kod na stronie error_404.php w Application/errors, pojawia się błąd.CodeIgniter: Nie znaleziono klasy "CI_Controller"

kod powoduje błąd:

<?php $ci =& get_instance();?> 
<?php $this->ci->load->view('header')?> 

Błąd:

Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231 

Linia 231 system\core\CodeIgniter.php jest:

function &get_instance() 
    { 
     return CI_Controller::get_instance(); 
    } 

Jak mogę rozwiązać ten problem tak, że Mogę załadować vie w w error_404.php bez zmiany czegokolwiek w plikach systemowych.

PS. Używam najnowszej wersji.

Dzięki.

Odpowiedz

4

Nie sądzę, że CI_Controller jest jeszcze załadowany. Klasa Exception obsługuje wyjście strony 404 przy użyciu include.

W dawnych czasach używałam prostych include s, aby poskładać szablon, lub wykonać żądanie na adres URL 404 strony, ale w końcu coś z tym zrobiłem. W wersji 2.0 można zdefiniować niestandardową stronę 404 w routes.php:

$route['404_override'] = 'controller/method/parameter'; 

To wciąż not a perfect solution, ale najprostszym sposobem, teraz jest po prostu korzystać z trasy.

Pamiętaj, że base_url()."controller/method/parameter" musi być prawidłowym adresem URL i powinieneś upewnić się, że ustawiłeś nagłówek 404 w kontrolerze, który również wysyła stronę (z jakiegoś powodu nie jest to wykonywane automatycznie).

+0

Jeśli używasz programu Composer do automatycznego ładowania, ten błąd może być również spowodowany przez brakujący katalog dostawców. W takim przypadku poprawianie przez uruchomienie 'composer install' na twoim serwerze (zalecane) lub przesyłanie przez FTP nie może uruchomić polecenia na twoim serwerze. –

0

Spróbuj:

<?php $ci =& get_instance();?> 
<?php $ci->load->view('header')?> 

Po przydzielony wystąpienie do $ CI CI można po prostu użyć $ Ci-> Load> widok ("header) w całym pliku.

+0

Próbowałem również, nie działa. Błąd jest spowodowany przez pierwszy wiersz, ponieważ pozostaje taki sam, nawet po usunięciu drugiej linii. – Roman

4

miałem ten problem, gdy poniższy tutorial CodeIgniter tutaj: http://codeigniter.com/user_guide/tutorial/static_pages.html

Problemem było próbowałem otworzyć URL:

localhost/CodeIgniter_2.1.1/application/controllers/pages.php

zamiast adresu URL:

localhost/CodeIgniter_2.1.1/index.php/pages/view

wiem, że to było około 18 miesięcy skoro pytasz to pytanie ale może to pomóc komuś innemu :)

4

lub można spróbować, może nieco brudny, ale myślę, że będzie pracować dla mnie

aktualizacja wyjątkiem

function show_404($page = '', $log_error = TRUE) { 
    if ($log_error) { 
    log_message('error', '404 Page Not Found --> '.$page); 
    } 
    header('Location: http://www.########.###/error/error_404'); 
    die(); 
} 

następnie wystarczy utworzyć kontroler do obsługi przekierowanie, być może z różnych błędów można użyć tego samego kontrolera

w ten sposób otrzymasz dynamiczny nagłówek i stopkę

Powiązane problemy