CodeIgniter:找不到类'CI_Controller'

时间:2011-07-20 07:51:02

标签: codeigniter php

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

代码导致问题:

Application/errors

错误:

<?php $ci =& get_instance();?>
<?php $this->ci->load->view('header')?>

Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231 的第231行是:

system\core\CodeIgniter.php

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

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

感谢。

4 个答案:

答案 0 :(得分:5)

我认为CI_Controller尚未加载。 Exception类使用include处理404页面输出。

在过去,我曾经使用直接include来拼凑模板,或者对我的404页面网址执行file_get_contents()或cURL请求,但他们最终对此做了些什么。在2.0中,您可以在routes.php中定义自定义404页面:

$route['404_override'] = 'controller/method/parameter';

它仍然是not a perfect solution,但现在最简单的方法就是使用这条路线。

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

答案 1 :(得分:5)

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

问题是我试图访问网址:

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

而不是寻址网址:

本地主机/ CodeIgniter_2.1.1 / index.php的/页/图

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

答案 2 :(得分: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();
}

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

通过这种方式,您将获得动态页眉和页脚

答案 3 :(得分:0)

尝试:

<?php $ci =& get_instance();?>
<?php $ci->load->view('header')?>

一旦您将CI实例分配给$ ci,您就可以在整个文件中使用$ ci-&gt; load-&gt; view('标题)。