CakePHP'de: Nasıl olur ben rota tüm eksik denetleyicisi / eylem tek bir genel hata sayfasına çağırır?

3 Cevap php

Ben Kek herhangi bir hata (eksik kontrolör, aksiyon, vs) karşılaştığında Pages::404 işlevi (ve karşılık gelen görünümü) kadar hizmet almak için çalışıyorum cakephp uygulaması var.

Bunu yapmak için en iyi yolu nedir?

3 Cevap

Kek otomatik olarak eksik yöntemleri veya denetleyicileri için bir 404 hatası atar. Hata ayıklama modunda, bu hata talimatlarını içeren detaylı bir hata mesajı şeklini alır iken, gibi:

Eksik Denetleyicisi

Hata: FooController bulunamadı.

Hata: dosyada aşağıda sınıfı FooController oluşturun:> app / controllers / foo_controller.php

Dikkat: Eğer app / views / hata / missing_controller.ctp oluşturmak, bu hata mesajı özelleştirmek istiyorsanız,

Üretim modunda (debug = 0) mesajı sadece bu gibi görünüyor:

Bulunamadı

Hata: İstenen adres '/ foo' bu sunucuda bulunamadı.

Bu hata sayfalar cake/libs/view/errors/ tanımlanmıştır. Hata ayıklama modunda mesajı diyor, sen app/views/errors/ içinde (cake/ dizininde olanlar aynı adı kullanarak) kendi özel hata sayfaları oluşturabilirsiniz.

Eğer hataları özel bir işlevi yürütmek istiyorsanız, en iyi Error Handling açıklandığı gibi AppError Controller koyacağım.

Adım 1: app_controller.php iki işlevler eklemek

function _setErrorLayout() {  
     if ($this->name == 'CakeError') {  
        $this->layout = 'error';  
     }    
}              

function beforeRender () {  
      $this->_setErrorLayout();
    }
}

Step2: In views\layouts\ create error.ctp containing echo $content_for_layout;

step:3 In views\errors\ make missing_action.ctp and customize the page as you need my PHP code was:

 echo $html->image('404-not-found-1-3.jpg');

Eğer 404 hata sayfasına yönlendirmek için çalışıyoruz denetleyicisi mı?

Bu durumda eğer Eh, böyle sorunu etrafında yürüyüş yapabilirsiniz:

Copy and paste the error layout (error404.ctp) from the cake core library directory into yours app/views/errors/

Bir denetleyici içinde bir hatayla karşılaşırsanız zaman sonra aşağıdaki satırı ekleyin.

$this->cakeError('error404',array(array('url'=>'/'))); 

Oh, bu işlemek için başka bir yolu app / config routes.php dosyasını düzenlemek için

CakePHP Official site Routes-Configuration

Ben şu anda CakePHP çalışan bir kopyasını yok, bu yüzden sadece (eğer routes.php dosyası içinde ne yapabilirim) burada temel mantığı tarif edersiniz

Redirect traffic with specific url patterns(say, http://yourwebsite/validController/validFunction/validParam) to their corresponding destinations respectively. Redirect all other traffic (missing controller, model, view, etc) to 404 page.

Umarım ki olur :)