2016-08-08 16 views
3

Ich versuche show_404 Methode von CI_Exceptions zu überschreiben, aber MY_Exceptions ist nie geladen.CodeIgniter nicht geladen erweitert MY_Exceptions

MY_Exceptions bei application/Kern/

Es ist Code

<?php 
class MY_Exceptions extends CI_Exceptions { 
    function show_404(){ 
     header("HTTP/1.1 404 Not Found"); 
     $CI =& get_instance(); 
     $CI->load->view('header.php'); 
     $CI->load->view('err/custom404.php'); 
     $CI->load->view('footer.php'); 
    } 
} 

Als ich show_404() nennen befindet ich zwei Fehler Fatal bekommen

Fatal error: Class 'MY_Exceptions' not found in C:\workspace\ictp-tv-main\system\core\Common.php on line 196

Fatal error: Class 'MY_Exceptions' not found in C:\workspace\ictp-tv-main\system\core\Common.php on line 196

ich andere erweiterte Klassen, die arbeiten Nun, mit dem gleichen Präfix MY_

EDIT After @Tpojka suggestion my code is

class MY_Exceptions extends CI_Exceptions { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->CI =& get_instance(); 
    } 

    public function show_404($page = '', $log_error = TRUE){ 

     header("HTTP/1.1 404 Not Found"); 

     $this->CI->load->view('header.php'); 
     $this->CI->load->view('err/custom404.php'); 
     $this->CI->load->view('footer.php'); 

    } 
} 

Und nun die 404-Seite ist leer.

EDIT

SOLUTION

Wir müssen die Fehler, nicht einfach Last Ansicht auf ECHO.

public function show_404($page = '', $log_error = TRUE){ 
    header("HTTP/1.1 404 Not Found"); 
    echo $this->CI->load->view('header.php',array('PAGE_TITLE'=>'Page not found'),true); 
    echo $this->CI->load->view('err/custom404.php',null,true); 
    echo $this->CI->load->view('footer.php',null,true); 
    exit(4); 
} 

Dank @Tpojka, um meine Meinung zu öffnen.

Antwort

2

Versuchen Sie, diese Art und Weise

<? 
class MY_Exceptions extends CI_Exceptions 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function show_404($page = '', $log_error = TRUE) 
    { 
     if (is_cli()) 
     { 
      $heading = 'Not Found'; 
      $message = 'The controller/method pair you requested was not found.'; 
     } 
     else 
     { 
      $heading = '404 Page Not Found This Time'; 
      $message = 'The page you requested was not found.'; 
     } 
     // By default we log this, but allow a dev to skip it 
     if ($log_error) 
     { 
      log_message('error', $heading.': '.$page); 
     } 
     echo $this->show_error($heading, $message, 'custom404', 404);//custom404 is in APPPATH.'views/errors/html/custom404.php' 
     exit(4); // EXIT_UNKNOWN_FILE 
    } 
} 

I-Code oben bearbeitet. Ich habe recherchiert und damit geendet. Ich kopierte einfach show_404() Methode von CI_Exceptions Klasse und sah, welche Änderungen vorgenommen werden können. Sie können Ihre Nachricht, Ihre Kopfzeile und rufen Sie Ihre Vorlage auch. Du kannst so spielen. Auch würde ich vorschlagen, dass Sie $this->load->view('header') und $this->load->view('footer') in custom404.php Datei selbst platzieren. In Datei custom404.php Datei nur Echo $heading und $message.

+0

Ich ändere diesen Weg, aber bekomme denselben Fehler. Und ich finde heraus, dass die Signatur von show_404 anders ist. Jetzt wird die korrekte Methode aufgerufen, aber eine leere Seite wird angezeigt. Sieh wie die Ansichten sind leer – lcssanches

+0

Danke, um meine Meinung zu öffnen! – lcssanches

+1

Glückliche Codierung. #Sobereithelfen – Tpojka