2011-07-20 17 views
5

Application/Core klasörüne MY_Controller.php ekleyerek CodeIgniter denetleyicisini genişlettim. İyi çalışıyor, ama şimdi Application/errorserror_404.php sayfasında aşağıdaki kodu eklediğinizde, hata alıyorum.CodeIgniter: 'CI_Controller' sınıfı bulunamadı

Kod neden sorun:

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

Hata:

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

system\core\CodeIgniter.php hattı 231 geçerli:

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

O kadar düzeltebilirim nasıl Ben vie yükleyebilirim sistem dosyalarında hiçbir şey değiştirmeden error_404.php dosyasında w.

PS. En son sürümü kullanıyorum.

Teşekkürler.

cevap

4

Henüz CI_Controller yüklenmemiş olduğunu düşünüyorum. Özel durum sınıfı, bir include kullanarak 404 sayfa çıktısını işliyor.

Eski günlerde, bir şablonu bir araya getirmek için düz include s kullanıyor veya 404 sayfanın URL'sine file_get_contents() veya cURL isteği uyguluyordum, ancak sonunda bununla ilgili bir şeyler yaptılar.

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

Hala not a perfect solution, ama en kolay yolu artık sadece rotayı kullanmaktır: 2.0 size routes.php yılında özel bir 404 sayfası tanımlayabilirsiniz.

base_url()."controller/method/parameter"'un geçerli bir url olması gerektiğini unutmayın ve denetleyiciye sayfayı veren bir 404 üstbilgisini ayarladığınızdan emin olmalısınız (bu, herhangi bir nedenle otomatik olarak yapılmaz).

+0

Otomatik yüklemede Composer kullanıyorsanız, bu hata ayrıca bir eksik satıcı dizininden de kaynaklanabilir. Bu durumda sunucunuzda 'composer install' çalıştırılarak düzeltin (önerilir) ya da FTP ile karşıya yüklemek sunucunuzda bir komut çalıştıramaz. –

0

Dene: Eğer sadece dosya boyunca $ CI-> load-> görünümü ('başlığı) kullanabilirsiniz ci sen $ için CI örneğini atanan kez

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

.

+0

Bunu denedim, çalışmaz. Hata, ikinci satırı kaldırsam bile aynı kaldığı için ilk satırdan kaynaklanır. – Roman

4

burada CodeIgniter öğretici sonrasında bu sorun vardı: http://codeigniter.com/user_guide/tutorial/static_pages.html

Sorun url erişmeye çalıştı oldu:

localhost/CodeIgniter_2.1.1/uygulama/denetleyicileri/pages.PHP

URL adresinin yerine

yerel posta kodu/CodeIgniter_2.1.1/index.php/sayfalar/görünüm

Bunu soru soruldu beri yaklaşık 18 ay oldu biliyorum ama belki başkası :)

4

yardımcı olabilir ya da, belki biraz kirli bu deneyebilirsiniz ama ben olacağını düşünüyorum için çalışmak bana

güncelleme istisna için

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(); 
} 

sonra sadece belki farklı hatalarla aynı denetleyicisi kullanabilir yönlendirmeyi işlemek için denetleyicisi oluşturmak

bu şekilde, dinamik üstbilginizi ve altbilginizi alacağınız şekilde