CodeIgniter中包含模板的自定义错误页面

And*_*ers 5 php error-handling custom-error-pages codeigniter-2

我正在使用CodeIgniter的模板库,http: //williamsconcepts.com/ci/codeigniter/libraries/template/reference.html,现在我也想实现自定义错误页面.我找到了一个涉及MY_Router扩展默认路由器的方法:http://maestric.com/doc/php/codeigniter_404 但只处理404错误.我希望所有错误都显示一个简单的用户友好页面,包括数据库错误等,我希望它通过一个控制器,部分所以我可以使用模板库,部分所以我也可以实现一个电子邮件功能来发送自己有关发生的错误的信息.

有人问过将上述MY_Router方法的功能扩展到其他错误,比如error_db,但没有得到作者的回答,所以我转到这里看看是否有人知道如何做到这一点,按照上述方法或实现它的任何其他简单方法.请注意我是新手,所以不要过多地考虑我对基本CodeIgniter功能的了解:-)

jef*_*eff 1

我这样做:我创建自己的错误页面,每当我应该抛出 404 错误时,我实际上会加载我的 404 页面。

假设我的默认控制器是 site.php,我的 site.php 如下所示:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Site extends CI_Controller {

    public function index()
    {
        $this->load->view('welcome_message');
    }

    public function view($page = "home" , $function = "index")
    {
        do_something();
        if($status == "404")
        {
            $function = "404";
        }
        $this->load->view('templates/header', $data);
        $this->load->view($page.'/'.$function, $data);      
        $this->load->view('templates/footer', $data);
    }




}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
Run Code Online (Sandbox Code Playgroud)

因此,每当发生错误时,我都会提供 home/404.php 服务。即,我不允许 CodeIgniter 调用show_404();,因此 404 页面看起来就像任何其他页面一样。

ps我假设您遵循了 CodeIgniter 网站上的精彩教程。

  • 然而,这仍然会发送 HTTP 200 代码。它只是给人一种 404 的错觉。 (5认同)