我试图从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让我敞开心扉。
答案 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
。