CodeIgniter没有加载扩展的MY_Exceptions

时间:2016-08-08 15:41:31

标签: php windows codeigniter

我试图从show_404覆盖CI_Exceptions方法,但永远不会加载MY_Exceptions

MY_Exceptions位于 application / core /

它的代码

<?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()时,我收到两个致命错误

  

致命错误:Class&#39; MY_Exceptions&#39;在第196行的C:\ workspace \ ictp-tv-main \ system \ core \ Common.php中找不到

     

致命错误:Class&#39; MY_Exceptions&#39;在第196行的C:\ workspace \ ictp-tv-main \ system \ core \ Common.php中找不到

我还有其他扩展类,它们使用相同的前缀MY_

  

EDIT   @Tpojka建议后,我的代码是

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页面是空白的。

修改

我们需要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让我敞开心扉。

1 个答案:

答案 0 :(得分: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类中复制了show_404()方法,看到了可以进行哪些更改。您也可以设置消息,标题并调用模板。你可以这样玩。另外,我建议您将$this->load->view('header')$this->load->view('footer')放在custom404.php文件中。在文件custom404.php文件中只有echo $heading$message