2016-06-27 54 views
6

'u otomatik olarak yükledikten sonra bile iyi görünümlü hata sayfalarına sahip olmak istiyorum. Bunun için bazı CSS ve JS dosyalarını almam gerekiyor. Ancak base_url() kullanarak bazı garip bir nedenle error_pages üzerinde çalışmaz. Tabii ki sadece href="/css/style.css"'u kullanabilir ve root klasöründen almasını söyleyebilirim. Ancak web sitesi, kök klasörden farklı bir klasöre yerleştirilebilir. Yani / kullanarak bir seçenek değildir.base_url() işlevi hata sayfalarında çalışmaz.

Sorunuz şimdi base_url() neden bir hata sayfasında çalışmıyor? Otomatik olarak yükledim, bu yüzden çalışmıyor olmalıydı?

Bu, base_url() öğesini görünümdeki error_404 sayfasından almaya çalıştığımda denediğim şeydir. Ben yardımcı

$autoload['helper'] = array('url', 'form'); 

Ve error_404 sayfasında url dahil ettik benim autoload.php olarak

(application/views/hatalar/html/error_404.php) Ben şöyle base_url yankılanan ediyorum:

An uncaught Exception was encountered 

Type: Error 

Message: Call to undefined function base_url() 

Filename: /usr/local/www/example.com/application/views/errors/html/error_404.php 

Line Number: 37 

Backtrace: 

    File: /usr/local/www/example.com/index.php 
    Line: 315 
    Function: require_once 
:

<?php echo base_url(); ?>

Bu alıyorum hatadır

CodeLinker klasörünü her güncelleştirdiğimde işlemi yeniden yapmak istemediğim için klasöründe herhangi bir değişiklik yapmamayı tercih ediyorum.

Sistem:

Codeigniter 3.0.6

PHP 7.0.8

Nginx 1.11.1

GÜNCELLEME: Her hata sayfası (db, 404, genel, php, vb) üzerinde base_url aramak istiyorum.

+0

http://stackoverflow.com/questions/:

$base_url = load_class('Config')->config['base_url']; 

Alındığı:

Eğer özel hata sayfasında aşağıdaki eklemeniz gerekir özel sayfasında base_url almak için 2310061/how-can-i-yönlendirme-a-404-hata-in-a-custom-404-sayfa-kullanarak-codeigniter Lütfen buna bir göz atın. –

+0

Bu kesinlikle işe yarayacak. Ama aşırı değil mi? Sadece base_url() göstermek için özel bir sınıf oluşturmak? Diğer cevapları görmek için biraz bekleyeceğim. – Efekan

+0

Peki ya diğer error_pages? Yukarıdaki yorum sadece 404 sayfası için çalışır mıyım? – Efekan

cevap

5

autoloader sonra kitaplıkları yüklemesidir autoloader çalışmıyor düzenleyebilir diğer php/db hatası pages.we tasarımını değiştirmek gerekiyorsa hata kontrolleri bitti.404 not found gibi hatalar varsa, otomatik yükleyiciyi yüklemeden özel hata sayfasını görüntüleyecektir. http://forum.codeigniter.com/thread-65968-post-335822.html#pid335822

1

Erişim URL'si işlevlerine erişmek için yardımcı sınıfı yüklemelisiniz. Yani, önce yapmaya çalışacağım:

$this->load->helper('url'); 

Sonra

echo base_url(); 

alternatif kullanarak echo, bunu yapmak için

$this->config->config['base_url']; 
+0

Var olmayan bir URL'yi ziyaret ettiğimde otomatik olarak çağrılan bir hata sayfası için yardımcı URL'yi nereye yüklerim? Ayrıca, manuel olarak yüklemem gerekirse otomatik yüklemeyi kullanmanın noktaları nelerdir? – Efekan

+0

Yardımı 'application/config/autoload.php''de yükleyebilirsiniz, ancak bunu neden manuel olarak gerçekleştirmeye çalışıyorsunuz? Bir denetleyici bulunamadığı zaman 'error_404' sayfası otomatik olarak çağrılır. – samayo

+0

Sorun bu. Yardımcı, 'autoload.php'de ** zaten ** şeklindedir. Ve hala 'base_url() 'diyemiyorum. Aynı alternatifiniz için de geçerli. – Efekan

0

ile aynı sonucu elde edebilirsiniz, You route.php dosyasındaki hata sayfalarını geçersiz kılmak

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

Ve method() işlevinin içinde, uri yardımcıyı normal kod denetleyici denetleyicisiyle aynı yükledikten sonra base_url()'a erişebilirsiniz.

$this->load->helper('uri'); 
echo base_url(); 

aşağıdaki dosyaları enter image description here

+0

Bir veritabanı hatası sayfasını nasıl geçersiz kılabilirim? Ya da bir PHP hatası sayfası? 404 hata sayfaları için – Efekan

+0

, yukarıdaki kod gayet iyi. Çekirdek dosyaları düzenleyerek diğer hataları geçersiz kıldım.Çünkü kullandığınız CI sürümü? – Shin

+0

Diğerleri için değil, 404 sayfa için iyi. Çekirdek dosyaları düzenlememeyi tercih ederim çünkü önemli güvenlik sorunları olan CodeIgniter'in yeni bir sürümü varsa, zaman kaybetmek istemiyorum çünkü çekirdek dosyalara kod koymalıyım. CodeIgniter sürümü 3.0.6'dır. – Efekan