CodeIgniter - 获取错误消息

时间:2011-10-28 21:15:19

标签: codeigniter http-status-code-404

我通过更改config.php

中的行来创建自己的自定义错误页面
$route['404_override'] = 'main/_404';

现在它通过在我的控制器中加载_404函数来加载正确的页面

问题是,我仍然希望能够抓住$ heading&默认页面中显示$ message错误变量,显示为:

<div id="container">
    <h1><?php echo $heading; ?></h1>
    <?php echo $message; ?>
</div>

这是我的_404功能,如果有人可以给我一些建议如何添加这些变量我会非常感激

public function _404() {
        $data['query'] = array('title' => 'Page not found.', 'keywords' => '', 'description' => 'Page not found', 'page' => 'error');


        $this->load->view('parts/head',$data);
        $this->load->view('parts/_404');// <- would go here
        $this->load->view('parts/footer');
    }

1 个答案:

答案 0 :(得分:3)

嗯,实际上,有两件事:

1)在您的重新路由的404页面中,您应该能够定期传递您想要的任何变量,这样您就可以$this->load->view('parts/_404',$data);并让变量可用。

2)如果您正在谈论默认的404页面,请记住,在某些环境声明下,即在调用show_404()核心函数时,它不能被覆盖:

  

它不会影响show_404()函数,它将继续   加载默认的error_404.php文件   应用/错误/ error_404.php。

此函数属于Exception处理程序类。事实上,在第90行,你有

function show_404($page = '', $log_error = TRUE)
    {
        $heading = "404 Page Not Found";
        $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', '404 Page Not Found --> '.$page);
        }

        echo $this->show_error($heading, $message, 'error_404', 404);
        exit;
    }

反过来调用show_error()方法设置标题错误代码(第4个参数),添加指定的视图 (第三个参数)到视图缓冲区。

正如您所看到的,消息在此处硬编码。如果你想要一个完全自定义,你可以覆盖这个方法(例如,调用它,在同一个类中调用另一个函数)或者只是硬编码其他消息。