Nasıl CodeIgniter için iyi bir hata 404 işleyicisi oluşturabilirim?

2 Cevap php

CodeIgniter nedeniyle etkili bir "denetleyicisi bulunamadı" durumdur ne bir 404 var olduğunda görüntülenen / system/application/errors/error_404.php vardır. Ancak, benim proje için, ben gerçekten bu hata bir yöntem denetleyici sınıfından eksik olduğunda bu sadece gibi ele alınması gerekir. Bu durumda, oldukça normal bir görünüm göstermektedir "bulunamadı Sayfa:? Belki bu ... demek" vb veritabanı tarafından oluşturulan navigasyon ile sayfa komple

Düşüncelerim iki şeyden birini yapabilirdi ki şunlardır:

  1. Create a header("Location: /path/to/error_page") varolan (ya da özel) Kontrolörün 404 işleyicisi yönlendirmek için çağrı
  2. Bunu işlemek için varsayılan yönlendirici çeşit ekleyin.

Istenilen sonucu elde etmek için en iyi yolu nedir? Için dışarı izlemek için herhangi bir tuzaklar var mı?

2 Cevap

Ben Smarty ile CodeIgniter'ı kullanın. I) notfound adlandırılan benim Smarty sınıf (ek bir işlevi var. NOTFOUND arama () 404 sayfaya doğru başlık konumunu ayarlar ve daha sonra bir 404 şablonu görüntüler. Çok yönlü yüzden şablonu geçersiz kılınamaz başlık ve mesaj vardır. İşte bazı örnek kod:

Smarty.class.php

function not_found() {
header('HTTP/1.1 404 Not Found');

if (!$this->get_template_vars('page_title')) {
    $this->assign('page_title', 'Page not found');
    }

    $this->display('not-found.tpl');
    exit;
}

Bir kontrolör ben böyle bir şey yapabilirsiniz:

$this->load->model('article_model');
$article = $this->article_model->get_latest();

if ($article) {
    $this->smarty->assign('article', $article);
    $this->smarty->view('article');
} else {
    $this->smarty->assign('title', Article not found');
    $this->smarty->not_found();
}

Aynı şekilde, ben de / system/application/error/error_404.php kodunu değiştirebilirsiniz:

$CI =& get_instance();
$CI->cismarty->not_found();

Bu harika çalışıyor, kod küçük miktarda kullanır ve eksik varlıkları farklı türleri için 404 işlevselliği çoğaltmak değil.

Ben dahili CodeIgniter manzaralı benzer bir şey yapabileceğini düşünüyorum. Önemli olan sizin bakış şeyler yapmak önce başlığı tükürmek için.

Güncelleme: Ben burada açıklanan benzer bir özel Smarty sarıcı kullanın:

Using Smarty with CodeIgniter

belki bu yardımcı olacaktır

http://maestric.com/en/doc/php/codeigniter_404