我通过在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。我正在使用最新版本。
感谢。
答案 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('标题)。