2016-08-08 34 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'); 
    } 
} 

私は

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

2つの致命的なエラーが発生しますshow_404()を呼び出すと、私はその仕事他の拡張クラスを持っているのですアプリケーション/コア/

に位置しています同じプレフィックスを持つよく、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

SOLUTION

我々はエラーではなく、単純なロードビューをエコーする必要があります。

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

を試してみて、私は上記のコードを編集しました。私は研究を取り、これで終わりました。私はちょうどメソッドを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

関連する問題