2016-08-08 2 views
3

Я пытаюсь переопределить show_404 метод от CI_Exceptions, но MY_Exceptions никогда не загружается.CodeIgniter не загружается расширенный MY_Exceptions

MY_Exceptions расположен в приложения/ядра/

Это код

<?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'); 
    } 
} 

Когда я называю show_404() я получаю два Фатальная ошибка

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

У меня есть другие расширенные классы, которые работают ну, с тем же префиксом 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'); 

    } 
} 

И теперь 404 страница пуста.

EDIT

РЕШЕНИЕ

Нам нужно 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); 
} 

Спасибо @Tpojka, чтобы открыть мой разум.

ответ

2

Попробуйте этот путь

<? 
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 
    } 
} 

Я редактировал код выше. Я взял исследование и закончил с этим. Я только что скопировал метод show_404() из класса CI_Exceptions и увидел, какие изменения могут быть сделаны. Вы можете настроить свое сообщение, свой заголовок и вызвать свой шаблон. Вы можете играть таким образом. Также я предлагаю вам разместить $this->load->view('header') и $this->load->view('footer') в файле custom404.php. В файле custom404.php файл просто эхо $heading и $message.

+0

Я изменяю этот путь, но получаю такую ​​же ошибку. И я узнаю, что подпись show_404 отличается. Теперь вызывается правильный метод, но отображается пустая страница. Похоже, что взгляды пустые – lcssanches

+0

Спасибо, открывай мой разум! – lcssanches

+1

Счастливое кодирование. #SOreadytohelp – Tpojka