CodeIgniter:找不到类'CI_Controller'

Rom*_*man 6 php codeigniter

我通过在Application/Core文件夹中添加MY_Controller.php来扩展CodeIgniter控制器.它工作正常,但现在当我在error_404.php页面上添加以下代码时Application/errors,我收到错误.

代码导致问题:

<?php $ci =& get_instance();?>
<?php $this->ci->load->view('header')?>
Run Code Online (Sandbox Code Playgroud)

错误:

Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231
Run Code Online (Sandbox Code Playgroud)

第231行system\core\CodeIgniter.php是:

function &get_instance()
    {
        return CI_Controller::get_instance(); 
    }
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题,以便我可以在error_404.php中加载视图而无需更改系统文件中的任何内容.

PS.我正在使用最新版本.

谢谢.

Wes*_*rch 5

我不认为CI_Controller已加载.Exception类使用a处理404页面输出include.

在过去,我曾经使用直接include拼凑模板,或者file_get_contents()对我的404页面URL 执行或cURL请求,但他们最终做了一些事情.在2.0中,您可以在以下位置定义自定义404页面routes.php:

$route['404_override'] = 'controller/method/parameter';
Run Code Online (Sandbox Code Playgroud)

它仍然不是一个完美的解决方案,但现在最简单的方法就是使用这条路线.

请注意,base_url()."controller/method/parameter"必须是一个有效的URL,并且您应该确保在控制器中设置404标题也输出页面(由于某种原因,它不会自动完成).


And*_*dPy 5

在此处遵循CodeIgniter教程时出现此问题:http://codeigniter.com/user_guide/tutorial/static_pages.html

问题是我试图访问网址:

本地主机/ CodeIgniter_2.1.1 /应用/控制器/ pages.php

而不是寻址网址:

本地主机/ CodeIgniter_2.1.1/index.php文件/网页/图

我知道你问这个问题已经有18个月了但也许它可以帮助别人:)


小智 5

或者你可以试试这个,也许有点脏,但我认为它对我有用

将您的例外更新为

function show_404($page = '', $log_error = TRUE)  {
   if ($log_error)   {
     log_message('error', '404 Page Not Found --> '.$page); 
   } 
   header('Location: http://www.########.###/error/error_404');  
   die();
}
Run Code Online (Sandbox Code Playgroud)

然后只需创建控制器来处理重定向,也许有不同的错误,你可以使用相同的控制器

这样你就可以获得动态的页眉和页脚